Tapestry数据校验-修改Required Validator
来源:互联网 发布:Tomcat集群 数据库 编辑:程序博客网 时间:2024/06/13 14:28
Tapestry数据校验-修改Required Validator
Required的修改遇到麻烦事,因为BaseValidator有一个方法isRequired,这样增加一个属性required的getter和 setter,page文件中设置required=searchId时,总是去匹配isRequired方法,这样出现字符串转换为布尔型错误。
为了对其它校验器不产生影响,我增加了一个校验器Required2,配置时required2=searchId。
同时,required类型的校验器本来不需要参数,所以现在参数值就是提交按钮的ID,因而可以使用BaseValidator的submitName属性。代码如下:
public String getRequired2() {
return this.getSubmitName();
}
public void setRequired2(String required) {
this.setSubmitName(required);
}
public Required2() {
}
public Required2(String initializer) {
super(initializer);
}
public boolean getAcceptsNull() {
return true;
}
public void validate(IFormComponent field, ValidationMessages messages,
Object object) throws ValidatorException {
if (!this.isSkipValid(field)) {
if ((object == null)
|| (String.class.isInstance(object) && (((String) object)
.length() == 0))
|| (Collection.class.isInstance(object) && ((Collection) object)
.isEmpty())) {
String message = buildMessage(messages, field);
throw new ValidatorException(message,
ValidationConstraint.REQUIRED);
}
}
}
private String buildMessage(ValidationMessages messages,
IFormComponent field) {
return messages.formatValidationMessage(getMessage(),
ValidationStrings.REQUIRED_FIELD, new Object[] { field
.getDisplayName() });
}
public void renderContribution(IMarkupWriter writer, IRequestCycle cycle,
FormComponentContributorContext context, IFormComponent field) {
context
.includeClasspathScript("/com/fitechlabs/xtrade/web/tapestry/validator/RequiredValidator.js");
if (this.isFormValid()) {
context.addSubmitHandler(Script.getFormRequiredScript(field,
TapestryUtils.enquote(buildMessage(context, field))));
} else {
this.addScriptContent(cycle, field, Script.getSubmitRequiredScript(
this.getSubmitName(), field, TapestryUtils
.enquote(buildMessage(context, field))));
}
}
}
Required2.js:
TapestryEx.requiredValid=function(event,formId,fieldId,message){
var field = document.getElementById(formId).elements[fieldId];
if (field.value.length < 1)
event.invalid_field(field, message)
}
Script.java:
public static String getFormRequiredScript(IFormComponent field,
String message) {
StringBuffer buffer = new StringBuffer(
"function(event) { Tapestry.require_field(event, '");
buffer.append(field.getClientId());
buffer.append("', ");
buffer.append(message);
buffer.append("); }");
return buffer.toString();
}
public static String getSubmitRequiredScript(String submitName,
IFormComponent field, String message) {
StringBuffer buffer = new StringBuffer();
buffer.append("TapestryEx.onclick(");
buffer.append("'" + submitName + "',");
buffer.append("function(event){TapestryEx.requiredValid(event,");
buffer.append("'" + field.getForm().getId() + "',");
buffer.append("'" + field.getClientId() + "',");
buffer.append(message + ");});");
return buffer.toString();
}
需要修改tapestry-4.0.jar/META-INF/tapestry.form.validator.xml的“<contribution configuration-id="Validators">”部分,其中增加
<validator name="required2" class="com.yourcompany.validator.Required2"/>
- Tapestry数据校验-修改Required Validator
- Tapestry数据校验Validator
- Tapestry的数据校验功能-修改框架初试
- Tapestry数据校验-修改Body.java和Body.js
- Tapestry的数据校验功能
- 数据校验validator 与 DWZ
- Hibernate Validator实现数据校验
- 后台数据校验hibernate-validator
- spring mvc 数据校验 -- hibernate-validator
- struts2学习笔记--使用Validator校验数据
- springMVC结合hibernate validator校验数据
- Tapestry 建立自己得 Validator
- 上传文件、Validator自动校验数据、动态FormBean
- JSR303的数据校验-Hibernate Validator方式实现
- Validator校验框架笔记
- commons-validator.jar校验
- struts2 xml validator 校验
- js自定义validator校验
- Tapestry中配置文件page的简化处理
- Tapestry的数据校验功能-修改框架初试
- 版权局:盗版是全球现象 中国盗版很多来自美国
- 系统路径含义和系统路径对应的绝对路径
- Tapestry数据校验-修改Body.java和Body.js
- Tapestry数据校验-修改Required Validator
- Tapestry存在多个提交按钮时设定按回车键动作的方法
- 鼠标屏幕取词的原码
- 强制数据类型转换
- JSP实现浏览器关闭cookies情况下的会话管理
- 浅析企业执行力
- 开发servlet步骤
- C#中的枚举值
- 使用jsp生成彩色汉字验证码