Java 使用验证程序界面时,错误消息不会显示在showForm()中
我正在使用Spring MVC 3.0.2中的Java 使用验证程序界面时,错误消息不会显示在showForm()中,java,spring,hibernate,jsp,Java,Spring,Hibernate,Jsp,我正在使用Spring MVC 3.0.2中的Validator接口,使用SimpleFormController验证表单。下面是扩展了SimpleFormController的控制器类 @SuppressWarnings("deprecation") final public class Temp extends SimpleFormController { public Temp() { setCommandClass(ValidationFo
Validator
接口,使用SimpleFormController
验证表单。下面是扩展了SimpleFormController
的控制器类
@SuppressWarnings("deprecation")
final public class Temp extends SimpleFormController
{
public Temp()
{
setCommandClass(ValidationForm.class);
setCommandName("validationForm");
}
@Override
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception
{
ValidationBean validationBean=(ValidationBean) command;
ModelAndView mv=new ModelAndView("Temp", "validationForm", validationBean);
if(errors.hasErrors())
{
System.out.println("error");
}
else
{
System.out.println("name = "+validationBean.getUserName());
}
return mv;
}
@Override
protected ModelAndView showForm(HttpServletRequest request, HttpServletResponse response, BindException errors) throws Exception
{
ModelAndView mv=new ModelAndView("Temp", "validationForm", errors.getTarget());
return mv;
}
}
表单验证是毫无疑问的。它很好用。这里唯一的问题是,当我使用如上所示的showForm(…){…}
方法时,不会显示错误消息,因为该方法在加载JSP页面时调用,并且在onSubmit()
方法完成后调用(在这种情况下,通过单击JSP页面上的提交按钮提交页面)
通过单击submit按钮提交页面时,在showForm()
方法(在onSubmit()
方法之后调用)中的errors.getTarget()
(或getCommand(request)
)命令对象不包含要在页面上显示的错误消息。命令对象(或域对象)与onSubmit()
方法中的命令对象不同。(因此,当注释掉showForm()
方法时,它会显示错误消息)
我需要使用showForm()
方法在提交或加载页面时显示数据库中的数据列表
当然,下面所示的referenceData()
方法可以实现这一点
protected Map referenceData(HttpServletRequest request, Object command, Errors errors) throws Exception
{
Map map=new HashMap();
return map;
}
但是我想继续使用
showForm()
方法。验证表单时使用showForm()
方法是否可以公平地显示错误消息?在客户端,您可以使用error对象的内容以及表单来显示错误。请注意,在Spring3.0中,onSubmit()和showForm()是不推荐使用的
@SuppressWarnings("deprecation")
final public class Temp extends SimpleFormController
{
public Temp()
{
setCommandClass(ValidationForm.class);
setCommandName("validationForm");
}
@Override
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception
{
ValidationBean validationBean=(ValidationBean) command;
ModelAndView mv=new ModelAndView("Temp", "validationForm", validationBean);
if(errors.hasErrors())
{
System.out.println("error");
errors.reject("error.server.error");
return showForm(request, response, errors);
}
else
{
System.out.println("name = "+validationBean.getUserName());
}
return mv;
}
@Override
protected ModelAndView showForm(HttpServletRequest request, HttpServletResponse response, BindException errors) throws Exception
{
ModelAndView mv=new ModelAndView("Temp", "validationForm", errors.getTarget());
return mv;
}
}
示例JSP代码:
例如,在jsp中,如果您需要显示错误消息,可以使用以下命令:
<span class="error">${error}</span>
${error}
错误是我们需要在春季设置的属性。非常感谢您的努力。很抱歉,我试过了,但没有直接起作用。我不知道如何在客户端使用
error
对象。我目前正在使用问题中提到的referenceData(){}
方法,而不是使用showForm()
方法,尽管我坚持使用showForm
方法。因此,如果您向我解释如何使用error
对象在客户端显示错误消息,我将非常感谢您。然而,我接受你的答案(因为我觉得它是正确的)并没有什么损失。再次感谢。