[英]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.