我有一个问题:验证表单后,我将在 Java 中检查表单是否有效,如果无效,则返回错误。
显示错误文本,但我无法验证我的表单并重新检查我的表单。
struts.xml:
<action name="validerInscription" class="utilisateurAction" method="validerInscription">
<result name="success" type="redirect">home</result>
<result name="error" type="redirect">inscription</result>
<result name="input" type="redirect">inscription</result>
</action>
行动:
public String validerInscription() {
logger.info("VALIDATION INSCRIPTION");
boolean isInscriptionReussie = false;
if (verificationFormulaire() == true) {
utilisateur.setImage("image/avatar/avatar1.png");
isInscriptionReussie = utilisateurService.sauvegarderUtilisateur(utilisateur);
session.put("user", utilisateur); // Ajouter utilisateur a la session
} else {
logger.info("--- INSCRIPTION => RETURN INPUT");
return INPUT;
}
if (isInscriptionReussie) {
logger.info("INSCRIPTION REUSSIE");
return SUCCESS;
} else {
logger.info("INSCRIPTION ERROR");
return ERROR;
}
}
最佳答案
您完全绕过了框架验证功能,该功能已准备好使用,工作原理如下:
当JSP调用一个action时,请求在到达action之前会经过一堆拦截器;每个拦截器都会做一些事情,比如设置参数、验证它们等等。
如果拦截器出现错误,它会抛出异常或 INPUT 结果,具体取决于拦截器,并且不会到达操作,因为新响应将从该拦截器开始到映射到异常或的结果输入结果。
验证拦截器与 XML 验证文件或 validate()
方法或其他方式一起使用,并且如果添加了 fieldError
(在 validate ()
,或者通过XML或注释自动),它将返回INPUT结果。
INPUT 结果应该是一个简单的dispatcher
结果(默认),而不是redirect
结果。
那么你应该这样做:
<action name="validerInscription" class="utilisateurAction" method="validerInscription">
<result name="success" >home.jsp</result>
<result name="error" >inscription.jsp</result>
<result name="input" >inscription.jsp</result>
</action>
// This will be run by the Validation Interceptor
public void validate(){
logger.info("VALIDATION INSCRIPTION");
// Here you need to do the checks done in verificationFormulaire(),
// adding fieldErrors in case they fails
if (firstName==null){
addFieldError("firstName", "First name can't be null");
}
if (lastName==null){
addFieldError("lastName", "Last name can't be null");
}
// etc...
}
// If you reach this, validation has passed
public String validerInscription() {
utilisateur.setImage("image/avatar/avatar1.png");
session.put("user", utilisateur); // Ajouter utilisateur a la session
if (utilisateurService.sauvegarderUtilisateur(utilisateur)) {
logger.info("INSCRIPTION REUSSIE");
return SUCCESS;
} else {
logger.info("INSCRIPTION ERROR");
return ERROR;
}
}
关于java - 验证表单 struts2 管理输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202927/