2

私はJSPとSpringフレームワークを使用しています。selectページで、対応する要素の横に5つのボタンを配置したいと思います。私の質問は、どうすればそのためのコードを繰り返さないようにすることができますか?

これが私が1つのボタンと選択の組み合わせに対して持っているコードです:

       <tr>
            <td>
                <sf:label path="inputFile">Select a file:</sf:label>
            </td>
            <td>
                <sf:select path="inputFile" cssStyle="width: 250px;" onchange="enableLocal(this.selectedIndex,'matButton')">
                    <sf:option value="Upload a Local File" />
                    <sf:option value=" --- Available already: --- " disabled="true" />
                    <sf:options items="${flowData.availableInputs}" />
                </sf:select>
            </td>
            <td>
                <input id="matButton" type="file" name="inputFile"/>
            </td>
        </tr>

上記のコードでは、名前inputFilematButtonはパラメータとして扱われます。つまり、他のボタンの名前は異なります。

私が念頭に置いているのは、上記のコードを生成する2つのパラメーターを持つ関数のようなものです。出来ますか?

4

2 に答える 2

5

カスタムJSPタグファイルを作成します。

/WEB-INF/tags/file.tag

<%@ tag body-content="empty" %>
<%@ attribute name="selectPath" required="true" type="java.lang.String" %>
<%@ attribute name="buttonId" required="true" type="java.lang.String" %>
<%@ taglib prefix="sf" uri="...???..." %>

<tr>
    <td>
        <sf:label path="${selectPath}">Select a file:</sf:label>
    </td>
    <td>
        <sf:select path="${selectPath}" cssStyle="width: 250px;" onchange="enableLocal(this.selectedIndex,'${buttonId}')">
            <sf:option value="Upload a Local File" />
            <sf:option value=" --- Available already: --- " disabled="true" />
            <sf:options items="${flowData.availableInputs}" />
        </sf:select>
    </td>
    <td>
        <input id="${buttonId}" type="file" name="inputFile"/>
    </td>
</tr>

(私はそのtaglibが何であるかsfわかりません、あなたはそのURIを自分で完成させる必要があります)

次のように使用します。ここfileで、はファイルのベースファイル名.tagです。

<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
...
<my:file selectPath="inputFile" buttonId="matButton" />
于 2012-09-20T13:54:04.940 に答える
1

上記のように、カスタムタグjspを使用できます。次に、モデルのどこかで、使用するすべてのペア(inputFilematButton)を宣言し、コアタグlibs(<c:forEach>)を使用できます。このを参照してください。これにより、ラベル定義(コントローラーから実行できるこれらすべてのアクション)を含むコレクションが繰り返されます。

于 2012-09-20T14:11:09.070 に答える