我最初有两个领域&验证成功后提交更多文件与提交我必须验证服务器端的这些字段 所以我第一次使用validate()第一次提交第二次我想做服务器端验证。我必须单一行动吗?
<s:form action="some.action" method="post" theme="simple" name="someForm" >
<td ><s:label value="StdNumber:" /></td>
<td ><s:textfield name="StdNum" theme="simple" /></td>
<td ><s:label value="Date of Birth:"/></td>
<td ><s:textfield size="10" name="dateOfBirth" id="dateOfBirth" onclick="displayCalendar(document.forms[0].dateOfBirth,'ddd-MM-yyyy',this)" />
<s:submit cssClass="button" value="Submit" name ="submitbtn" id="submitbtn" method="getEduInfo" /></td>
<s:if test="sucess">
<td ><s:textfield name="Stdname" theme="simple" /></td>
<td ><s:label value="marks:"/></td>
<td ><s:textfield size="10" name="marks" /></td>
<s:submit method="getPersonalInfo" value="submit"/>
</s:if>
</s:form>
答案 0 :(得分:2)
要以不同方式验证字段,您应该获取按钮的名称。
在validate()
中你必须写为:
if(buttonName.equals(yourFirstButtonName)) {
/* validation code for first two fields*/
} else if(buttonName.equals(yourSecondButtonName)) {
/* validation code for second two fields */
}
您可以通过向name
提供s:submit tag
属性来获取按钮名称,并将getters
和setters
写入该名称。
答案 1 :(得分:0)
您可以使用annotated validations
。
如果我们假设你的动作类中有2个方法:
1)public String getEduInfo() {...}
2)public String getPersonalInfo() {...}
只需为每个注释使用@Validations
注释,并在那里放置适当的验证。
请务必在validateAnnotatedMethodOnly
上为true
拦截器设置validation
参数:
<interceptor-ref name="validation">
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor>
多亏了这一点,你可以为不同的方法调用不同的验证。