gpt4 book ai didi

java - 使用 Validator 接口(interface)时,showForm() 中不显示错误消息

转载 作者:行者123 更新时间:2023-12-01 15:18:40 26 4
gpt4 key购买 nike

我正在使用 SimpleFormController 使用 Spring MVC 3.0.2 的 Validator 接口(interface)来验证表单。以下是扩展 SimpleFormController 的 Controller 类。

@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 页面上的提交按钮来提交页面)。

当点击提交按钮提交页面时,中的命令对象为errors.getTarget()(或getCommand(request)) showForm() 方法(在 onSubmit() 方法之后调用)不包含要在页面上显示的错误消息。命令对象(或域对象)与 onSubmit() 方法中的命令对象不同。 (因此,当 showForm() 方法被注释掉时,它会显示错误消息)

当页面提交或加载时,我需要使用 showForm() 方法显示数据库中的数据列表。

当然,如下所示的 referenceData() 方法就可以解决这个问题。

protected Map referenceData(HttpServletRequest request, Object command, Errors errors) throws Exception
{
Map map=new HashMap();
return map;
}

但我想坚持使用 showForm() 方法。在验证表单时使用 showForm() 方法是否有公平的方法来显示错误消息?

最佳答案

在客户端,您可以使用错误对象的内容以及表单来显示错误。请注意,onSubmit() 和 showForm() 在 spring 3.0 中已弃用。

@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中设置的属性。

关于java - 使用 Validator 接口(interface)时,showForm() 中不显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11278813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com