[英]How to validate Dropdown in Struts2
我正在編寫一個動作類,其中我想使用Struts2
打印錯誤。 在我的JSP頁面中,我有一個下拉列表,其中有10個狀態。 當我部署應用程序時, Null
的域錯誤總是顯示出來,甚至沒有單擊任何按鈕。 如果用戶沒有從下拉列表中選擇任何狀態,我希望打印該錯誤。
動作類:
public String modifyState() {
CatastropheDataTO catDataTo = new CatastropheDataTO();
try {
catDataTo.setState(this.state);
catDataTo.setActive(Boolean.valueOf(this.active));
catDataTo.setStartDate(this.startDate);
if( getState() != null || getActive() != null || getStartDate() != null ) {
getCatastropheManager().updateCatastropheData(catDataTo);
addActionMessage(this.getErrorMessageFactory().generateMessage(Constants.ERROR_CODE_7).getMessageText());
} else if(getState() == null){
addFieldError("state", "Please select a state");
}
} catch (Exception ex) {
addActionError(this.getErrorMessageFactory().generateMessage(Constants.ERROR_CODE_3028).getMessageText());
}
return SUBMIT;
}
不知何故,由於總是出現"Please select a state"
,因此getState()
始終為null,而我希望如果用戶直接單擊提交按鈕而不選擇任何狀態,則將其打印出來。
只需使用兩個動作( 可以是同一Java類的兩個方法 ),第一個動作呈現頁面,第二個動作執行應該在按下按鈕后執行的業務。
在你的情況下:
public String showStates() {
return SUCCESS;
}
public String modifyState() {
CatastropheDataTO catDataTo = new CatastropheDataTO();
try {
catDataTo.setState(this.state);
catDataTo.setActive(Boolean.valueOf(this.active));
catDataTo.setStartDate(this.startDate);
if( getState() != null || getActive() != null || getStartDate() != null ) {
getCatastropheManager().updateCatastropheData(catDataTo);
addActionMessage(this.getErrorMessageFactory().generateMessage(Constants.ERROR_CODE_7).getMessageText());
} else if(getState() == null){
addFieldError("state", "Please select a state");
}
} catch (Exception ex) {
addActionError(this.getErrorMessageFactory().generateMessage(Constants.ERROR_CODE_3028).getMessageText());
}
return SUBMIT;
}
就是說,您的方法繞過了框架的機制,為您提供了一些內置的方法來執行驗證( validate()
, XML
, annotations
...)。
最相似的你正在使用的一個是validate()
是(防止前面解釋的問題再次出現,可以適用於只有一些方法方法,而不是對類的所有操作方法,與validateXXX()
或@SkipValidation
。
結果將是這樣的:
@SkipValidation
public String showStates() { // call this the first time
return SUCCESS; // or INPUT, or whatever
}
public void validate(){
if(getState() == null){
addFieldError("state", "Please select a state");
}
}
public String modifyState() {
CatastropheDataTO catDataTo = new CatastropheDataTO();
try {
catDataTo.setState(this.state);
catDataTo.setActive(Boolean.valueOf(this.active));
catDataTo.setStartDate(this.startDate);
if( getActive() != null || getStartDate() != null ) {
getCatastropheManager().updateCatastropheData(catDataTo);
addActionMessage(this.getErrorMessageFactory().generateMessage(Constants.ERROR_CODE_7).getMessageText());
}
} catch (Exception ex) {
addActionError(this.getErrorMessageFactory().generateMessage(Constants.ERROR_CODE_3028).getMessageText());
}
return SUBMIT;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.