我正在用validate()
方法进行XML表单验证和表单验证。 XML验证是检查他们是否填写了必填字段,字段长度是否合适等,而验证方法是否执行数据库查找(如果输入值存在于数据库中)。如果确实存在,则会添加字段错误。struts2如何运行其验证方法?
现在我的问题。当我提交表单并且我没有填写requiredstrings
时,它会向页面添加一个错误,但是当我输入一个有效值时,它仍会提示相同的错误(并且它不会调用验证方法)。
这是我的形式。
<!DOCTYPE HTML>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<html>
<head>
<sj:head/>
</head>
<body>
<h3>Register for a prize by completing this form.</h3>
<div id="divErrors">
</div>
<s:form action="register" id ="result">
<label>UserName</label>
<s:textfield name="userBean.username" />
<s:fielderror/>
<sj:submit
targets="result"
value="AJAX Submit"
indicator="indicator"
button="true"
/>
</s:form>
</body>
</html>
注册-validation.xml中
<!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="userBean.username">
<field-validator type="requiredstring">
<message>User name is required.</message>
</field-validator>
</field>
</validators>
而且我validate
从RegisterAction
类。
public void validate(){
if(userBean != null && userBean.getUsername().equals("foo")){
this.addFieldError("userBean.username", "That Username already exist");
}
}
情景我在做什么。
我会在没有填写必填字符串的情况下提交表单,然后我会输入一个有效的值,提交表单后仍然存在相同的错误。
所以你说xml验证不起作用? –
是的,它不起作用 – KyelJmD