我想仅在动作类中验证特定方法。 行动方法就是这样。
public String add() throws Exception {
// aflag = true;
org.setAoName(aoName);
orgBo.addOrg(org);
orglist = orgBo.searchOrg(organisationSearch);
setAoName("");
setAflag("viewaddorgs");
return "add";
}
问题是目前我在动作类中有很多动作方法。当我调用这些方法时,它会验证此方法。请帮我用xml验证这个方法。
这是我的OraganisationAction-validation.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="aoName">
<field-validator type="requiredstring">
<message>
The name is required!
</message>
</field-validator>
<field-validator type="requiredfield">
<message>
The name is required!
</message>
</field-validator>
</field>
</validators>
这是我的jsp:
<s:form id="post" action="addorgs" validate="true" >
<s:textfield name="aoName" label="Add Organisations" />
</s:form>
struts xml
:
<package name="default" extends="struts-default">
<result-types>
<result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="*security" class="com.ast.action.admin.SecurityAction"
method="{1}">
<result name="second" type="tiles">secondTemplate</result>
<result name="pass" type="tiles">orgTemplate</result>
</action>
<action name="*orgs" class="com.ast.action.admin.OraganisationAction"
method="{1}">
<result name="viewadd" type="tiles">orgAddTemplate</result>
<result name="input" type="tiles">orgAddTemplate</result>
<result name="add" type="tiles">orgAddTemplate</result>
<result name="addtbl" type="tiles">orgAddTemplate</result>
<result name="search" type="tiles">orgTemplate</result>
<result name="delete" type="tiles">orgTemplate</result>
<result name="viewedit" type="tiles">orgEditTemplate</result>
<result name="edit" type="tiles">orgEditTemplate</result>
<result name="edittbl" type="tiles">orgEditTemplate</result>
<result name="orgmenu" type="tiles">orgTemplate</result>
<result name="view" type="tiles">orgViewTemplate</result>
</action>
它适用于注释,但xml尚未成功。
答案 0 :(得分:0)
使用操作别名:将不同的Action方法映射到struts.xml中的不同操作别名,而不是单个yourAction-validation.xml
文件,为要执行的验证程序添加yourAction-yourAlias-validation.xml
那种方法。
修改强>
现在没有任何验证。
<validators> <field name="aoName"> <field-validator type="required"> <message>You cannot leave the aoName address field empty.</message> </field-validator> </field> </validators>
名称为
OraganisationAction-add-validation.xml
,并将其与动作类包放在一起。有没有什么可以在struts.xml中启用验证?
如果您已正确配置(例如默认值)拦截器堆栈,则已启用验证。如果您使用名为OraganisationAction-add-validation.xml
的文件,则表示:
OraganisationAction.java
; 您在struts.xml中的操作映射必须如下:
<action name="add" class="your.package.OraganisationAction" method="add">
<result>yourResult.jsp</result>
</action>
查找拼写错误,检查拦截器堆栈,它会自动运行。
答案 1 :(得分:0)
要从验证中排除某些方法,您可以覆盖validation
拦截器的参数。例如,在拦截器堆栈中,您可以编写
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse,yourmethod</param>
</interceptor-ref>
在动作配置中,您可以使用上面的代码和
<interceptor-ref name="defaultStack">
<param name="validation.excludeMethods">input,back,cancel,browse,yourmethod</param>
</interceptor-ref>
注意yourmethod
是方法名称。
您可以通过此文件中的操作名称后缀仅为一个操作指定validation.xml
。例如,AcrionClass-add-validation.xml
仅适用于操作配置中的操作名称add
。请注意,此处add
是操作名称,而不是方法名称。
通常,name属性与方法名称匹配,但它们也可能不同。
答案 2 :(得分:0)
我遇到了类似的问题,但后来我纠正了几件事情:
1)yourAction-yourAlias-validation.xml中的DOCTYPE应为
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
2)创建了一个自定义拦截器来排除不需要验证的方法。下面是我的候选人注册的样本,我必须跳过区域方法的验证,该方法为一个州获取区域。
<interceptor-stack name="clientValidation">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,district</param>
</interceptor-ref>
<interceptor-ref name="workflow"/>
</interceptor-stack>
<package name="registration" namespace="/candidate" extends="struts-default">
<action name="candidateRegistration" class="com.app.action.CandidateAction">
<interceptor-ref name="clientValidation"/>
<result name="input">/jsps/student/studentregistration.jsp</result>
<result name="failure1">/jsps/student/registrationfailure.jsp</result>
<result name="cancelRegistration">/jsps/login.jsp</result>
<result name="district">/jsps/includes/dropdown_districts_regoffice.jsp</result>
</action>
</package>