2

送信ボタンをクリックして同じページにリダイレクトしたときに、ddl の同じ項目を選択するにはどうすればよいですか?

4

2 に答える 2

0

allをクリックしたときに、DDL1 およびMDDL2 の をリクエスト パラメータとしてサーバーに送信している必要がありますsearch

検索でサーブレットに移動して検索結果を取得したり、DDL を含む JSP にリダイレクトまたは転送する前よりも何らかの種類のビジネス ロジックを実行したりする場合は、リクエスト属性としてall&Mリクエスト パラメータを追加し、JSP でそれらをチェックします。値に対して属性を要求し<option>ます。

コードは次のようになります。

JSP コード スニペット

<select name="ddl1">
    <option value="0">all</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
</select>

<select name="ddl2">
    <option value="0">All</option>
    <option value="L">L</option>
    <option value="M">M</option>
    <option value="N">N</option>
    <option value="O">O</option>
</select>

サーブレット コード スニペット

String ddl1Param = request.getParameter("ddl1");
String ddl2Param = request.getParameter("ddl2");

// your business logic
// ...

request.setAttribute("ddl1Attr", ddl1Param);
request.setAttribute("ddl2Attr", ddl2Param);

// your forward or redirect logic goes here
// ...

変更された JSP コードは次のようになります。

各オプション ブロックに条件を含めて、<c:if>返された属性がオプション値と等しいかどうかを確認しました。そうであれば、そのselected属性がオプションに配置されます。

JSP 式言語 (EL)を使用しています。

<select name="ddl1">
    <option value="0" <c:if test="${'0' eq ddl1Attr}">selected</c:if>>all</option>
    <option value="A" <c:if test="${'A' eq ddl1Attr}">selected</c:if>>A</option>
    <option value="B" <c:if test="${'B' eq ddl1Attr}">selected</c:if>>B</option>
    <option value="C" <c:if test="${'C' eq ddl1Attr}">selected</c:if>>C</option>
    <option value="D" <c:if test="${'D' eq ddl1Attr}">selected</c:if>>D</option>
</select>

<select name="ddl2">
    <option value="0" <c:if test="${'0' eq ddl2Attr}">selected</c:if>>all</option>
    <option value="L" <c:if test="${'L' eq ddl2Attr}">selected</c:if>>L</option>
    <option value="M" <c:if test="${'M' eq ddl2Attr}">selected</c:if>>M</option>
    <option value="N" <c:if test="${'N' eq ddl2Attr}">selected</c:if>>N</option>
    <option value="O" <c:if test="${'O' eq ddl2Attr}">selected</c:if>>O</option>
</select>

別のアプローチ

検索のクリック時にリクエストを同じ JSP に転送するだけの場合 (つまり、その間にサーブレットがない場合)、JSP コードを次のように変更できます。

param.ddl1どちらでも使用できますparam["ddl1"]が、同じことです。この EL は、リクエスト パラメータddl1ddl2.

<select name="ddl1">
    <option value="0" <c:if test="${'0' eq param.ddl1}">selected</c:if>>all</option>
    <option value="A" <c:if test="${'A' eq param.ddl1}">selected</c:if>>A</option>
    <option value="B" <c:if test="${'B' eq param.ddl1}">selected</c:if>>B</option>
    <option value="C" <c:if test="${'C' eq param.ddl1}">selected</c:if>>C</option>
    <option value="D" <c:if test="${'D' eq param.ddl1}">selected</c:if>>D</option>
</select>

<select name="ddl2">
    <option value="0" <c:if test="${'0' eq param['ddl2']}">selected</c:if>>all</option>
    <option value="L" <c:if test="${'L' eq param['ddl2']}">selected</c:if>>L</option>
    <option value="M" <c:if test="${'M' eq param['ddl2']}">selected</c:if>>M</option>
    <option value="N" <c:if test="${'N' eq param['ddl2']}">selected</c:if>>N</option>
    <option value="O" <c:if test="${'O' eq param['ddl2']}">selected</c:if>>O</option>
</select>

別の方法は、値を に格納することですsession。しかし、私は固執するrequest方が良いと思います。

于 2013-03-08T08:55:02.937 に答える
0

ページにリダイレクトされるため、フォームから送信されたデータを保存できません。私が考えることができるオプションは、セッションに保存して渡すことです。

この SO の質問は、セッションでデータを設定する方法に役立ちます

于 2013-03-08T09:13:40.753 に答える