Java 使用验证程序界面时,错误消息不会显示在showForm()中

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

我正在使用Spring MVC 3.0.2中的
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
对象在客户端显示错误消息,我将非常感谢您。然而,我接受你的答案(因为我觉得它是正确的)并没有什么损失。再次感谢。