【问题标题】:How to convert String to List object in spring MVC如何在 Spring MVC 中将 String 转换为 List 对象
【发布时间】:2012-01-13 07:55:33
【问题描述】:

我正在尝试 Spring MVC 示例。我有一个具有 List 类型变量的 testBean,例如

  private List<HashMap<String, String>> books;

在我的控制器中我有

@RequestMapping(value = "/booksList", method = RequestMethod.POST)
    public String displayBooks(@ModelAttribute TestBean testBean, Model model, HttpSession   session) {
     // some code here
}

在我的jsp页面中

<form:form action="booksList.html" method="post" modelAttribute="testBean">
        <form:hidden path="books" />
   <input type="submit" value="submit">
</form:form>

当我提交此表单时,我收到此错误

无法将类型 [java.lang.String] 的值转换为属性“books[0]”所需的类型 [java.util.HashMap]。

我该如何解决这个错误?请帮忙

更新:

I have seen that我也可以这样做。

 @InitBinder
public void initBinder(WebDataBinder binder) {              
        binder.registerCustomEditor(List.class, "testBean", new CustomCollectionEditor(List.class) {                
        @Override           
        protected Object convertElement(Object element) {
            TestBean testBean = new TestBean();                
            if (element != null) {
                List<HashMap<String, String>> id = (List<HashMap<String, String>>) element;
                testBean.setFilters(id);
            }
            return testBean;
        }
        });       
   }

但是我不完全理解上面的方法,我写的可能有一些错误。而且我不知道如何以及从哪里可以调用convertElement(Object element) 方法。我明白initBinder(WebDataBinder binder) 会在我的控制器方法public String displayBooks(...) 之前调用jsut。甚至我都不知道这样做是否正确。

【问题讨论】:

    标签: spring-mvc


    【解决方案1】:

    如上所述,您正试图用单个文本字段表示一个极其复杂的类型(ListMaps)。您的第一步应该是确定您希望如何在 Web 表单中显示该信息。然后尝试使用“罐装数据”(例如,您使用假的 books 加载的 TestBean)并查看您的表单是否符合您的预期。

    如果您更改 books 集合的存储方式,您可能会发现它更容易。在允许时将这种复杂类型作为“bean”的一部分,可能不推荐。考虑使用List&lt;BookBean&gt;,其中BookBean 保存BookDetailBean 的集合,BookDetailBean 保存您之前在Map 中拥有的字符串到字符串关系。

    【讨论】:

      猜你喜欢
      • 2017-03-27
      • 2013-08-26
      • 2022-01-05
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      相关资源
      最近更新 更多