我使用Validator
使用SimpleFormController
接口与Spring MVC 3.0.2验证表单。以下是扩展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()
方法完成后调用(In例如,通过单击JSP页面上的提交按钮提交页面)。
通过单击提交按钮提交页面时,errors.getTarget()
方法中getCommand(request)
(或showForm()
)的命令对象(在{{1}之后调用) }方法)不包含要在页面上显示的错误消息。命令对象(或域对象)与onSubmit()
方法中的命令对象不同。 (因此,当onSubmit()
方法被注释掉时,它会显示错误消息)
我需要使用showForm()
方法在提交或加载页面时显示数据库中的数据列表。
当然,如下所示的showForm()
方法可以解决问题。
referenceData()
但我想坚持使用protected Map referenceData(HttpServletRequest request, Object command, Errors errors) throws Exception
{
Map map=new HashMap();
return map;
}
方法。在验证表单时使用showForm()
方法时是否有一种公平的方式来显示错误消息?
答案 0 :(得分:1)
在客户端,您可以使用错误对象的内容来显示错误以及表单。请注意,在Spring 3.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是我们需要在spring中设置的属性。