摘要: Struts2默認(rèn)使用Jakarta的Common-FileUpload的文件上傳解析器。見struts.properties配置文件中:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#指定使用COS的文件上...
閱讀全文
對(duì)于login方法的校驗(yàn),可以通過<ActionClassName>-<ActionAliasName>-validation.xml文件來(lái)校驗(yàn),即RegistAction-login-validation.xml文件進(jìn)行校驗(yàn)。同時(shí),RegistAction-validation.xml的校驗(yàn)規(guī)則仍舊對(duì)login方法有效。即login方法的校驗(yàn)規(guī)則是Region-validation.xml和RegistAction-login-validation.xml的總和。
如果RegistAction繼承了BaseAction,那么對(duì)于BaseAction類的校驗(yàn)規(guī)則也會(huì)被RegistAction類所繼承校驗(yàn)。具體來(lái)說(shuō),其校驗(yàn)規(guī)則的搜索文件規(guī)則如下:
BaseAction-validation.xml
BaseAction-別名-validation.xml
RegistAction-validation.xml
RegistAction-別名-validation.xml
對(duì)于Struts2所支持的內(nèi)建校驗(yàn)器,我們可以通過xwork.2.1.2.jar中的com/opensymphony/xwork2/validator/validators/default.xml文件查看。
除了配置文件,Struts2也支持Annotation。下面就是使用Annotation配置的RegistAction:
@Validation()
public class RegistAction extends ActionSupport {
private static final long serialVersionUID = -2113900523366315993L;
//該請(qǐng)求包含的4個(gè)請(qǐng)求參數(shù)
private String name;
private String pass;
private int age;
private Date birth;
public String getName() {
return name;
}
@RequiredStringValidator(type=ValidatorType.FIELD,key="name.required",message="")
@RegexFieldValidator(type=ValidatorType.FIELD,expression="\\w{4,25}",key="name.regex",message="")
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
@RequiredStringValidator(type=ValidatorType.FIELD,key="pass.required",message="")
@RegexFieldValidator(type=ValidatorType.FIELD,expression="\\w{4,25}",key="pass.regex",message="")
public void setPass(String pass) {
this.pass = pass;
}
public int getAge() {
return age;
}
@IntRangeFieldValidator(message="",key="age.range",min="1",max="150")
public void setAge(int age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
@DateRangeFieldValidator(message="",key="birth.range",min="1900/01/01",max="2050/01/21")
public void setBirth(Date birth) {
this.birth = birth;
}
}

對(duì)于不能通過內(nèi)置校驗(yàn)器進(jìn)行校驗(yàn)的邏輯,則可通過重寫validate()方法來(lái)實(shí)現(xiàn)。如果一個(gè)Action中存在多個(gè)邏輯處理,則需要通過validateXxx()方法來(lái)分別進(jìn)行校驗(yàn),其中Xxx代表方法名。如login()方法對(duì)應(yīng)的校驗(yàn)方法為validateLogin()。
Struts2的輸入校驗(yàn)流程:
1。類型轉(zhuǎn)換器負(fù)責(zé)對(duì)字符串的請(qǐng)求參數(shù)執(zhí)行類型轉(zhuǎn)換,并將這些值設(shè)置成Action的屬性值。
2。在執(zhí)行類型轉(zhuǎn)換過程中,如果發(fā)生異常,則將異常保存到ActionContext中,并由conversionError攔截器負(fù)責(zé)將其封裝到fieldError里。然后執(zhí)行第3步;如無(wú)異常,直接執(zhí)行第3步。
3。調(diào)用Struts2內(nèi)置的輸入校驗(yàn)規(guī)則進(jìn)行輸入校驗(yàn)
4。通過放射調(diào)用validateXxx()方法。
5。調(diào)用validate()方法。
6。如果上述都未發(fā)生fieldError,將調(diào)用Action里處理用戶請(qǐng)求的處理方法;如果出現(xiàn)了fieldError,則轉(zhuǎn)入input邏輯視圖所指定的視圖資源。
摘要: Struts2提供了基于驗(yàn)證框架的輸入校驗(yàn),在這種校驗(yàn)方式下,所有的輸入校驗(yàn)只需要通過指定的配置文件即可。Struts2中每個(gè)Action都有一個(gè)校驗(yàn)文件,其規(guī)則為:<Action名字>-validation.xml。如:
Code highlighting produced by Actipro CodeHighlighter (freewar...
閱讀全文