用struts验证器验证一个List
论坛里有一篇「struts使用list提交多行表单(提供完整示例)」,我能理解并且能实现list提交多行表单的问题。
现在我还有个问题,各位大侠们解答一下,我提交的list数据可以通过form里的validate来验证,可是为了层次清晰更想通过validator验证器来验证,怎么编写自己的验证器方法可以实现。
以下是验证器自定义方法,怎么填充这个方法可以实现验证list呢?
我的list里面有很多字段,我是想用验证器来验证很多字段。
validator-rules.xml配置如下:
<form-validation> <global> <validator name="validateList" classname="org.apache.struts.validator.FieldChecks" method="validateMyList" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" msg="errors.××××××" /> </global></form-validation>
<form-validation> <global /> <formset> <form name="MyForm"> <!-- 我自定义的form中的list --> <field property="myList" depends="validateList"> <msg name="validateList" key="error.×××××××" /> <arg key="×××××" resource="true" position="0"/> </field> </form> </formset></form-validation>
public static boolean validateMyList( Object bean, ValidatorAction action, Field field, ActionMessages message, Validator validator, HttpServletRequest req) { List target = null; String pattern = null; target = ValidatorUtils.getValueAsList(bean, field.getProperty()); 怎么实现…………… return Boolean.FALSE;}/** * mylist */ private List<CooperationClient> myList;
package ja.co.eisho.master.template.search;/** * <pre> * * </pre> * * @author 東方標準 LUJX */public class CooperationClient { /** * */ private String clientCategoryID; /** * */ private String clientCategoryName; /** * */ private String templateID; /** * <pre> * * </pre> * * @param String templateID */ public void setTemplateID(String templateID) { this.templateID = templateID; } /** * <pre> * * </pre> * * @return String templateID */ public String getTemplateID() { return templateID; } /** * <pre> * * </pre> * * @param String clientCategoryID */ public void setClientCategoryID(String clientCategoryID) { this.clientCategoryID = clientCategoryID; } /** * <pre> * * </pre> * * @return String clientCategoryID */ public String getClientCategoryID() { return clientCategoryID; }}<form-validation> <global /> <formset> <form name="MyForm"> <!-- 我自定义的form中的list --> <field property="myList" depends="validateList"> <msg name="validateList" key="error.×××××××" /> <arg key="×××××" resource="true" position="0"/> </field> </form> </formset></form-validation>
public static boolean validateMyList( Object bean, ValidatorAction action, Field field, ActionMessages message, Validator validator, HttpServletRequest req) { List target = null; String pattern = null; target = ValidatorUtils.getValueAsList(bean, field.getProperty()); 怎么实现…………… return Boolean.FALSE;}/** * mylist */ private List<CooperationClient> myList;
package ja.co.eisho.master.template.search;/** * <pre> * * </pre> * * @author 東方標準 LUJX */public class CooperationClient { /** * */ private String clientCategoryID; /** * */ private String clientCategoryName; /** * */ private String templateID; /** * <pre> * * </pre> * * @param String templateID */ public void setTemplateID(String templateID) { this.templateID = templateID; } /** * <pre> * * </pre> * * @return String templateID */ public String getTemplateID() { return templateID; } /** * <pre> * * </pre> * * @param String clientCategoryID */ public void setClientCategoryID(String clientCategoryID) { this.clientCategoryID = clientCategoryID; } /** * <pre> * * </pre> * * @return String clientCategoryID */ public String getClientCategoryID() { return clientCategoryID; }}<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator Config 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd"><validators> <validator name="abc" class ="com.opensymphony.xwork2.validator.validators.RequiredStringValidator" /> </validators>注意:使用自写的检验器,系统自带的检验器需要在这里重新注册才能用。因为系统的检验器注册文件根本没加载。
package hi;import com.opensymphony.xwork2.ActionSupport;public class Hai extends ActionSupport { private String msg; //省略掉getter and setter @Override public String execute() throws Exception { return "success"; } }<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN""http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators> <field name="msg"> <field-validator type="abc"> <message>不能输入abc</message> </field-validator> <field-validator type="requiredstring"> <message>不能为空</message> </field-validator> </field></validators>
<s:form action="hai.action" > <s:textfield name="msg" label="msg" /> <s:submit /> </s:form>
<action name="hai" > <result name="success">/hai.jsp</result> <result name="input">/hai.jsp</result> <result name="err">/hai.jsp</result> </action>