Struts2 如何在一个表单中有多个提交按钮的情况下在side action类中执行验证

Struts2 如何在一个表单中有多个提交按钮的情况下在side action类中执行验证,struts2,Struts2,我最初有2个字段&submit在成功验证后,我需要在服务器端验证这些字段 所以第一次使用validate()第一次提交第二次我想做服务器端验证 <s:form action="some.action" method="post" theme="simple" name="someForm" > <td ><s:label value="StdNumber:" /></td> <td ><s:textfield name="

我最初有2个字段&submit在成功验证后,我需要在服务器端验证这些字段 所以第一次使用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>

要以不同方式验证字段,应获取按钮的名称

validate()

if(buttonName.equals(yourFirstButtonName)) { 

     /* validation code for first two fields*/ 

} else if(buttonName.equals(yourSecondButtonName)) { 

     /* validation code for second two fields */

}

您可以通过向
s:submit tag
赋予
name
属性来获取按钮名称,并将
getters
setters
写入该名称。

您可以使用
带注释的验证。
如果我们假设您的action类中有两个方法:
1) 
公共字符串getEduInfo(){…}

2)
公共字符串getPersonalInfo(){…}

只需对它们中的每一个使用
@Validations
注释,并在其中放置适当的验证

请记住,为
验证
拦截器在
true
上设置
验证NotatedMethodOnly
参数:

<interceptor-ref name="validation">
      <param name="validateAnnotatedMethodOnly">true</param>
</interceptor>

真的
因此,您可以为不同的方法调用不同的验证