struts 2データ検証のまとめ
12503 ワード
struts 2のデータチェックは、struts 2のタイプ変換後に行われます.以下の例を示します.
1、register 2.jspを作成して、顧客にデータを入力させます.コードは以下の通りです.
(1)usernameは空の値ではなく、長さは6-10の間です.
(2)passwordは空の値ではなく、長さは6-10の間です.
(3)repasswordは空の値ではなく、長さは6-10の間です.
(4)ageは1−150の間でなければならない.
(5)bithdayは空の値ではいけません.
(6)graduationは空の値ではありません.
(7)bithdayの日付はgraduationの日付より早くしなければなりません.
2、検査ファイルを配置して、名前は:Register Aciton-validation.xmlです.下記のコードを追加します
4、struts.xmlファイルの配置
5、success.jspファイルを作成する
6、まとめ
(1)データチェック中のxmlファイルの名前は正確でなければなりません.「actionの類名-validation.properties」.
(2)struts 2はデフォルトのチェックを提供してくれました.印刷された情報はとても友好的ではないので、私達はそれが提供した情報を修正することができます.次の2つの方法があります.
第一の方法:
struts.xmlに入れます.
定義ファイル名をクラス名として入力するコードは以下の通りです.
(3)全部で二つの検査方法があります.addAction Err方法とaddFieldErr方法は、jspファイルで以下のように設定して、表示する内容を指定します.
formのテーマは必ずシンプルに設定できません.formのvalidate属性はtrueに設定します. struts 2を使用しない方がいいです.クライアント検証方法を提供してくれます.
第二の方法:jsコードを作成して実現する.
formのonsubmitの値を下記のコードに設定します.
(6)具体的なactionクラスのいずれかの業務ロジックのみをチェックします.名前は「aciton類の名前-メソッド名-validation.xml」です.「action類の名前-validation.xml」を定義したら、struts 2は先に前者を実行します.だから、後者を定義しない方がいいです.
(7)
1、register 2.jspを作成して、顧客にデータを入力させます.コードは以下の通りです.
<body>
<table align="center" width="30%">
<tr>
<td style="color:red">
<s:fielderror></s:fielderror>
</td>
</tr>
</table>
<form action="reg.action" method="post">
<table align="center" border="1" width="30%">
<tr>
<td>
username
</td>
<td>
<input type="text" name="username" />
</td>
</tr>
<tr>
<td>
password
</td>
<td>
<input type="password" name="password">
</td>
</tr>
<tr>
<td>
re-password
</td>
<td>
<input type="password" name="repassword">
</td>
</tr>
<tr>
<td>
age
</td>
<td>
<input type="text" name="age">
</td>
</tr>
<tr>
<td>
birthday
</td>
<td>
<input type="text" name="birthday">
</td>
</tr>
<tr>
<td>
graduation
</td>
<td>
<input type="text" name="graduation">
</td>
</tr>
<tr>
<td>
<input type="submit" value="submit">
</td>
<td>
<input type="reset" value="reset">
</td>
</tr>
</table>
</form>
</body>
次の規則に従ってデータチェックができます.(1)usernameは空の値ではなく、長さは6-10の間です.
(2)passwordは空の値ではなく、長さは6-10の間です.
(3)repasswordは空の値ではなく、長さは6-10の間です.
(4)ageは1−150の間でなければならない.
(5)bithdayは空の値ではいけません.
(6)graduationは空の値ではありません.
(7)bithdayの日付はgraduationの日付より早くしなければなりません.
2、検査ファイルを配置して、名前は:Register Aciton-validation.xmlです.下記のコードを追加します
<?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="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>username is should not be null!</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">6</param>
<message>username length is incorrect and should be between ${minLength} and ${maxLength}</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>password is should not be null</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">6</param>
<message>password length is incorrect and should be between ${minLength} and ${maxLength}</message>
</field-validator>
</field>
<field name="repassword">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>repassword is should not be null</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">6</param>
<message>repassword length is incorrect and should be between ${minLength} and ${maxLength}</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="max">10</param>
<param name="min">6</param>
<message>age is incorrect and should be between ${min} and ${max}</message>
</field-validator>
</field>
<field name="birthday">
<field-validator type="required">
<message>birthday is incorrect</message>
</field-validator>
</field>
<field name="graduation">
<field-validator type="required">
<message>graduation is incorrect</message>
</field-validator>
<field-validator type="date">
<param name="max">2050-08-12</param>
<param name="min">2010-09-23</param>
<message>graduation should after the birthday</message>
</field-validator>
</field>
</validators>
3、Register Aciton類を編纂するpackage com.test.action;
import java.util.Calendar;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAciton extends ActionSupport{
private String username;
private String password;
private String repassword;
private int age;
private Date birthday;
private Date graduation;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRepassword() {
return repassword;
}
public void setRepassword(String repassword) {
this.repassword = repassword;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
@Override
public void validate() {
}
public Date getGraduation() {
return graduation;
}
public void setGraduation(Date graduation) {
this.graduation = graduation;
}
}
4、struts.xmlファイルの配置
<action name="reg" class="com.test.action.RegisterAciton">
<result name="success">/success.jsp</result>
<result name="input">/register.jsp</result>
</action>
5、success.jspファイルを作成する
<body>
username <s:property value="username"/><br>
password <s:property value="password"/><br>
re-password <s:property value="repassword"/><br>
age <s:property value="age"/><br>
birthday <s:property value="birthday"/><br>
graduation <s:property value="graduation"/>
</body>
これまでのデータ検証の例の設定に成功しました.6、まとめ
(1)データチェック中のxmlファイルの名前は正確でなければなりません.「actionの類名-validation.properties」.
(2)struts 2はデフォルトのチェックを提供してくれました.印刷された情報はとても友好的ではないので、私達はそれが提供した情報を修正することができます.次の2つの方法があります.
第一の方法:
struts.xmlに入れます.
<constant name="struts.custom.i18n.resources"value="message"></constant>
そして、新しいmessage.propertiesというファイルを作成します.コードは以下の通りです.xwork.default.invalid.fieldvalue={0} error
第二の方法:定義ファイル名をクラス名として入力するコードは以下の通りです.
invalid.fieldvalue.age=\u5e74\u9f84\u8f93\u5165\u4e0d\u6b63\u786e
invalid.fieldvialue.age=年齢情報の入力が正しくないという意味です.(3)全部で二つの検査方法があります.addAction Err方法とaddFieldErr方法は、jspファイルで以下のように設定して、表示する内容を指定します.
<table align="center" width="30%">
<tr>
<td style="color: red">
<s:fielderror cssStyle="color:red" />
</td>
</tr>
</table>
(4)サーバ側のデータチェック以外に、クライアントのデータチェックを提供できます.クライアントセグメントのデータチェックは2つの方法があります.formのテーマは必ずシンプルに設定できません.formのvalidate属性はtrueに設定します. struts 2を使用しない方がいいです.クライアント検証方法を提供してくれます.
第二の方法:jsコードを作成して実現する.
formのonsubmitの値を下記のコードに設定します.
<s:form action="reg" theme="simple" onsubmit="return validate()">
編纂js <script type="text/javascript">
function validate()
{
var usernamevalue=document.getElementById("usernameId").value;
var passwordvalue=document.getElementById("passwordId").value;
var repasswordvalue=document.getElementById("repasswordId").value;
if(usernamevalue.length==0)
{
alert("username should not be blank");
return false;
}
else if(usernamevalue.length>10||usernamevalue.length<6)
{
alert("length of username should be between 6 and 10");
return false;
}
if(passwordvalue.length==0)
{
alert("password should not be blank");
return false;
}
else if(passwordvalue.length>10||passwordvalue.length<6)
{
alert("length of password should be between 6 and 10");
return false;
}
if(repasswordvalue.length==0)
{
alert("repassword should not be blank");
return false;
}
else if(repasswordvalue.length>10||repasswordvalue.length<6)
{
alert("length of repassword should be between 6 and 10");
return false;
}
if(repasswordvalue!=passwordvalue)
{
alert("repasswordis not equals password!");
return false;
}
return true;
}
</script>
(5)xmlファイルを使ってデータをチェックする場合、actionクラスでvalidateメソッドを書き換えないでください.(6)具体的なactionクラスのいずれかの業務ロジックのみをチェックします.名前は「aciton類の名前-メソッド名-validation.xml」です.「action類の名前-validation.xml」を定義したら、struts 2は先に前者を実行します.だから、後者を定義しない方がいいです.
(7)
class parentAction
{
test()
}
class childAction extends parentAction
{
test()// test
}
parentAction-validtion.xml
parentAction-test-validtion.xml
childAction-validtion.xml
childAction-test-validtion.xml
以上のコードに対して、struts 2のすべてのxmlファイルに対するアクセス順は上から下までです.