2

タグaddFieldError付きのフォームで使用しようとしている Struts2 は初めてです。<s:select>ドロップダウン リストから値を選択する必要があるフォームがあります。このフォームが初めて表示されたとき、応答はリストを作成した Action クラスから来ます。私のフォームでは、次の<s:select>ようなタグを使用してドロップダウンでそのリストを印刷しています:

<s:form action="clientselect">
  <h2>Select Client to add the case :</h2>  
  <table>
    <s:select list="list" headerKey="-1" headerValue="Select Client"
              label="Select Client" tooltip="Select the desired client" name="client">
    </s:select>

    <tr><td><s:submit value="Register Case" theme="simple" align="right"/></td>
    <td><s:reset value="Reset" theme="simple" align="right"/></td></tr>
  </table>
</s:form>

「pageinclude=ancar」はこのフォームを印刷します。

struts.xml

<action name="clientselect" class="casediary.JudicialCaseRegisterValidation" method="execute">
  <result name="addcase">user.jsp?pageinclude=ncr</result>
  <result name="error">user.jsp?pageinclude=errancar</result>
  <result name="input">user.jsp?pageinclude=ancar</result>
  <result name="loggedout">index.jsp?pageinclude=relogin</result>
</action>

JudicialCaseRegisterValidation.java 内

public void validate()
{       
    if(client==null || client.equals("-1"))     
        addFieldError("client", "This field can not be blank.");
}

すべて正常に動作しています。エラー条件が満たされ、結果として「入力」が得られます。エラー メッセージも表示されますが、ドロップダウン リストの値が表示されません。リストは空です。今回は List が設定されている Action クラスからのレスポンスではないためです。

次に、struts.xml を変更して、リクエストを次の<result>ように Action クラスに送信しました。

<result name="input"  type="redirect">link.action</result>

「link.action」は、リストを作成してそのフォームを印刷するために Action クラスでリクエストを送信しているものです。

しかし、今回はフォームが再度印刷され、エラーメッセージは表示されません。

そのリストをもう一度印刷し、それに加えてエラーメッセージも表示したいです。方法を教えてください。

4

2 に答える 2