rejectValue并在jsp中使用。 spring3 mvc; JSP;

时间:2011-12-07 10:57:58

标签: jsp spring-mvc spring-3

我的应用程序有一个带强制复选框的注册页面。如果在没有勾选复选框的情况下提交表单,我希望在尝试提交表单时显示错误消息。

在我的控制器中,我有:

 if(req.getParameter("tcCheck")==null)
    result.rejectValue("tcCheck","Check.tc", "Need to accept terms and conditions");

我的jsp:

<form:form modelAttribute="user" method="post">
   ...
   <form:errors path=tcCheck/>
   ...
</form:form>

在运行时,我收到此错误:

  

错误500:org.springframework.beans.NotReadablePropertyException:   bean类的属性'tcCheck'无效   [com.domgen.recupl.domain.User]:Bean属性'tcCheck'不是   可读或具有无效的getter方法:是否返回类型   getter匹配setter的参数类型?

用户域对象没有tcCheck作为其实例变量之一,当然它不应该放在User bean中。

我想知道如何在不编辑User bean的情况下显示我的错误消息? 感谢。

A

3 个答案:

答案 0 :(得分:0)

如何使用errors.rejectValue?有关示例,请参阅here

答案 1 :(得分:0)

在您的控制器中:使用addError方法

if(req.getParameter("tcCheck")==null)
    result.addError(new ObjectError("tcCheck", "error message"));



在你的jsp:use元素属性而不是路径

<form:form modelAttribute="user" method="post">
  ...
  <form:errors element="tcCheck"/>
  ...
</form:form>

帮助!?

答案 2 :(得分:0)

要使用这样的表单错误,您必须在表单支持对象上使用与表单字段匹配的getter。所以,如果你想使用

<form:errors path="tcCheck"/>

您的用户对象或用户对象的子对象必须有方法getTcCheck()。即。

<form:errors path="subObject.tcCheck"/>

在这种情况下,您将使用rejectValue(“subObject.tcCheck”,...