【问题标题】:Spring MVC Data Binding ErrorSpring MVC 数据绑定错误
【发布时间】:2011-10-23 08:14:36
【问题描述】:

当我尝试在控制器方法中检索表单结果时出现以下错误:

org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 个错误 字段“客户”上的对象“搜索”中的字段错误:拒绝值 [14];代码 [typeMismatch.search.clients,typeMismatch.clients,typeMismatch.java.util.List,typeMismatch];参数 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [search.clients,clients];论据 [];默认消息 [clients]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“clients”所需的类型“java.util.List”;嵌套异常是 java.lang.IllegalStateException:无法将类型 [java.lang.String] 的值转换为属性“clients[0]”所需的类型 [com.Client]:找不到匹配的编辑器或转换策略]

模型对象如下所示:

 public class SearchForm {
     private String name;
     private List<Client> clients;
     //getters and setters
 }
 public class Client {
     private String name;
     private Int id;
 }

表格:

<form:form method="POST", name="searchresults.html" modelattibute="search">
   <form:input path="name"/>
   <form:checkboxes path="clients" items="{clientsList}" itemsValue="id" itemsLabel="name"/>
</form:form>

此表单在 html 页面上正确显示值,但是当我单击提交按钮时出现上述错误

【问题讨论】:

  • 这里是 &lt;form:form method="POST", name="searchresults.html" modelattibute="search"&gt; &lt;form:input path="name"/&gt; &lt;form:checkboxes path="clients" items="{clientsList}" itemsValue="id" itemsLabel="name"/&gt; &lt;/form:form&gt; 表单,此表单在 html 页面上正确显示值,但是当我单击提交按钮时,出现上述错误
  • 您是否为您的班级客户创建了属性编辑器或转换策略?

标签: spring data-binding spring-mvc


【解决方案1】:

浏览器只会在提交表单时发送客户端 ID 列表。 Spring 怎么会知道如何将每个 ID 转换为 Client 实例。你要么告诉它怎么做,要么给你的bean添加一个List&lt;String&gt; clientIds属性,并让form:checkboxes标签使用这个属性而不是clients作为它的路径。

【讨论】:

  • @JB.. 感谢您的回复.. 第一部分.. “我如何告诉它从 ID 构建客户端实例..” 我的意思是控制器 public String searchformsubmit(@ModelAttribute("search") SearchForm search){} 的这一行发生异常..现在我应该在什么时候添加要转换的代码?其次,如果我有 List 那么我无法在 jsp 页面上显示客户端名称
猜你喜欢
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-29
  • 2012-12-23
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
相关资源
最近更新 更多