![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
struts2.0 验证框架 如何做集合验证?越详细越好
在struts2.0验证框架下,完成下述功能:写一个以二维表的形式输出某数据库表的内容的jsp,且内容可修改,当单击一个更新按钮后,将修改后得内容写入数据库,但写入数据库...
在struts2.0 验证框架下,完成下述功能:
写一个以二维表的形式输出某数据库表的内容的jsp,且内容可修改,
当单击一个更新按钮后,将修改后得内容写入数据库,但写入数据库前
要对二维表上的内容作较简单的验证,有什么具体且好的办法让某一列
都被做成相同的验证?比如自定义验证器,或利用struts2.0自带的功能
什么的,哪怕您会以一维表的验证,也请详细说明
"一直就很笨"的回答我在其他地方看过也试过,可能是我更笨或者是资料不详细,没搞出来 展开
写一个以二维表的形式输出某数据库表的内容的jsp,且内容可修改,
当单击一个更新按钮后,将修改后得内容写入数据库,但写入数据库前
要对二维表上的内容作较简单的验证,有什么具体且好的办法让某一列
都被做成相同的验证?比如自定义验证器,或利用struts2.0自带的功能
什么的,哪怕您会以一维表的验证,也请详细说明
"一直就很笨"的回答我在其他地方看过也试过,可能是我更笨或者是资料不详细,没搞出来 展开
1个回答
展开全部
首先我们需要继承FieldValidatorSupport类,然后我们重写他的validate方法
validate
package com.opensymphony.xwork2.validator.validators;
import com.opensymphony.xwork2.validator.ValidationException;
public class ListPropertyValidator extends FieldValidatorSupport {
public void validate(Object object) throws ValidationException {
String fieldName = getFieldName();//userList[$i].username
Object value = this.getFieldValue("userList[0].username", object);//here is very important
System.out.println(value);
if ((minLength > -1) && (val.length() < minLength)) {
addFieldError(fieldName, object);
} else if ((maxLength > -1) && (val.length() > maxLength)) {
addFieldError(fieldName, object);
}
}
}
上面的过程还不完整,需要通过一种
Action code:
public class DemoAction extends ActionSupport {
private List<User> userList;
}
User code:
public class User implements Serializable {
private String username;
private String password;
private String gender;
//省略了getter, setter
}
Xml Configuration:
<?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="userList[$i].username">
<field-validator type="listproperty">//这里需要设计出一种比较优雅的配置方式来进行验证集合类的元素
<message key="devices.add.guest.guestid.required"></message>
</field-validator>
</field>
</validators>
追加默认的验证器:
<?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">
<!-- START SNIPPET: validators-default -->
<validators>
<validator name="listproperty" class="com.opensymphony.xwork2.validator.validators.ListPropertyValidator"/>
</validators>
validate
package com.opensymphony.xwork2.validator.validators;
import com.opensymphony.xwork2.validator.ValidationException;
public class ListPropertyValidator extends FieldValidatorSupport {
public void validate(Object object) throws ValidationException {
String fieldName = getFieldName();//userList[$i].username
Object value = this.getFieldValue("userList[0].username", object);//here is very important
System.out.println(value);
if ((minLength > -1) && (val.length() < minLength)) {
addFieldError(fieldName, object);
} else if ((maxLength > -1) && (val.length() > maxLength)) {
addFieldError(fieldName, object);
}
}
}
上面的过程还不完整,需要通过一种
Action code:
public class DemoAction extends ActionSupport {
private List<User> userList;
}
User code:
public class User implements Serializable {
private String username;
private String password;
private String gender;
//省略了getter, setter
}
Xml Configuration:
<?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="userList[$i].username">
<field-validator type="listproperty">//这里需要设计出一种比较优雅的配置方式来进行验证集合类的元素
<message key="devices.add.guest.guestid.required"></message>
</field-validator>
</field>
</validators>
追加默认的验证器:
<?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">
<!-- START SNIPPET: validators-default -->
<validators>
<validator name="listproperty" class="com.opensymphony.xwork2.validator.validators.ListPropertyValidator"/>
</validators>
参考资料: http://everhow.blog.163.com/blog/static/3573773200911853631870/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询