xml ベースの検証を使用しています。
問題:
ユーザーが入力するすべてのフィールドが空白であるため、ページが最初にロードされたときに入力フォームで検証を実行したくありません。フォームを登録して新しい学生を追加するとします。ボタンをクリックすると実行されるはずです。
注: ボタンのクリック時に検証を行っても、同じ URL を保持したい。新しいフォームの URL はhttp://localhost:8000/Struts2_Spring_Crud/student/add
、検証が失敗した場合でも、URL が同じである必要があります。
struts.xml
<default-action-ref name="list"/>
<action name="list" class="com.myapp.actions.StudentAction" method="getAllStudents">
<!--<interceptor-ref name="myInterceptor"/>-->
<result name="success" type="tiles">/student.list.tiles</result>
</action>
<!--<action name="add">
<result type="tiles">/student.edit.tiles</result>
</action>-->
<action name="add" class="com.myapp.actions.StudentAction" method="insertOrUpdateStudent">
<result name="success" type="redirectAction">list</result>
<result name="input" type="tiles">/student.edit.tiles</result>
</action>
入力フォーム
<s:fielderror/>
<s:form action="add" method="POST">
<s:label name="name" value="Name *"/>
<s:textfield name="student.name" value="%{student.name}"/>
<s:fielderror fieldName="student.name"/>
<s:label name="age" value="Age *"/>
<s:textfield name="student.age" value="%{student.age}"/>
<s:submit name="saveForm" value="#title"/>
</s:form>
編集済み:この URLhttp://localhost:8000/Struts2_Spring_Crud/student/add
から送信されたものよりも excludeMethods を追加するhttp://localhost:8000/Struts2_Spring_Crud/student/list
と、追加フォームが表示されません。
<action name="add" class="com.myapp.actions.StudentAction" method="insertOrUpdateStudent">
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<result name="success" type="redirectAction">list</result>
<result name="input" type="tiles">/student.edit.tiles</result>
</action>