XMLフォームの検証とvalidate()
メソッドを使用したフォームの検証を行っています。XML検証では、必要なフィールドに入力されているかどうか、適切な長さのフィールドであるかどうかなどを確認します。validateメソッドは、入力された値がデータベースに存在するかどうかをデータベース検索します。存在する場合は、フィールドエラーが追加されます。
今私の問題。フォームを送信して入力しなかっrequiredstrings
た場合、ページにエラーが追加されますが、有効な値を入力しても同じエラーが表示されます(同時に、validateメソッドは呼び出されません)。
これが私のフォームです。
<!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>
Register-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");
}
}
私がしているシナリオ。
必要な文字列を入力せずにフォームを送信し、有効な値を入力します。フォームを送信した後も同じエラーが発生します。