自定义用SpringMVC集合编辑器不返回数据JSP中(SpringMVC Custom Colle

2019-08-18 15:42发布

我在春天绑定多选择列表中的项目没有得到它的数据来自DAO数据从另一个选择选项列表中。 用户点击一个按钮并且该数据被使用jquery发送到多选择选项列表。

当窗体发布以来复杂的数据类型,所以我注册了一个CustomEditor和它连接到@InitBinder数据绑定不会发生该项目。

EDITED我已经更新了代码CollectionEditor现在回国的公民的列表返回查看但是我无法获得该列表中的数据来填充选择选项。 我试图元素添加到列表中,不过仍然JSP选择留空当返回形成的服务器。

下的代码:

CustomCollectionEditor

@InitBinder("crime")    
    protected void initBinder(WebDataBinder binder, HttpServletRequest request, ServletRequestDataBinder victimbinder){
     victimbinder.registerCustomEditor(List.class, "victims", new CustomCollectionEditor(List.class){
         protected Object convertElement(Object element){

             Citizens victims = new Citizens();

             String ssNumber = "";

             if (element instanceof String){
                ssNumber = (String) element;

             }                      

             logger.debug("element is ;" +element);

             try {

                int socialSecurityNumber = Integer.parseInt(ssNumber);
                victims = citizenManager.getCitizen(socialSecurityNumber);

            } catch (NumberFormatException e) {                     
                logger.error(e.getMessage());
            } catch (Exception e) {
                logger.error(e.getMessage());
            }

             return victims;        
         }

    }); 

这是从DAO在控制器充满JSP

这包含当所述按钮被点击它从列表中取数据上追加到在其下结合POJO其他列表数据填充形式DAO类

<label>Victims List</label><buttonid="addVictimBtn">/button>
<form:select path="" id="dbvictims" title="Victims Of Crime" class="victimLst">
<form:options items="${dbvictims.dbvictimList}" itemValue="socialSecurityNumber" itemLabel="name"/>
</form:select>  

被绑定到POJO JSP选择项目

<label>Victims In Crime</label><button id="removeVictimBtn">-</button> 
<form:select path="victims" id="victims" title="Victims Of Crime"  multiple="multiple" class="victimLst">
<form:options items="${victimList}" itemValue="socialSecurityNumber" itemLabel="name"/>
</form:select><form:errors path="victims" class="errors" />                            

Answer 1:

解决这个问题是很简单的全部工作在CustomCollectionEditor已经完成。 结合复杂的数据类型如上述的时,这是很重要的。 可能还有其他的方法来这样做,但是我觉得这是一个非常干净和简单的方法。

因为它绑定到视图元素的项目属性return语句是非常重要的。 CustomCollectionEditor返回( 受害者 )的列表中使用DAO从数据库中获取的对象。 这是重要的,因为只有后发送的选择值不是标签,因此我们重建列表并重新发送到视图。

的这一点,我省略了一部分从控制器传递列表对象回到图。

调节器

@RequestMapping(value="save.htm", method = RequestMethod.POST)
    public ModelAndView handleSave(@Valid @ModelAttribute Crime crime, 
    BindingResult result,
    ModelMap m,
    Model model) throws Exception {


    if(result.hasErrors()){
           model.addAttribute("victimList",crime.getVictims());

    return new ModelAndView("*Your View*");
...............


文章来源: SpringMVC Custom Collection Editor Not Returning Data To Jsp