【问题标题】:Invalid working of #springFormSingleSelect in velocity template速度模板中#springFormSingleSelect 的无效工作
【发布时间】:2012-08-26 00:29:28
【问题描述】:

我正在制作 spring mvc 应用程序并为视图使用速度模板。有用于填充数据的表单,在此表单中,我使用 #springFormSingleSelect.Form 在数据有效时工作正常,但当表单由无效填充时提到的数据有错误消息,但#springFormSingleSelect 是空的。这是我的观点:

<form action="saveEmployee" method="POST">
                #springBind("newEmployee")
            <a href="listEmployees">#springMessage("label.back")</a>
            <p>
            <table>                
                <tr>
                    <td>#springMessage("label.firstName")</td>
                    <td>#springFormInput("newEmployee.firstName" "")</td>
                    <td><font color="red">#springShowErrors("&nbsp" "")</font></td>
                </tr>
                <tr>
                    <td>#springMessage("label.lastName")</td>
                    <td>#springFormInput("newEmployee.lastName" "")</td>
                    <td><font color="red">#springShowErrors("&nbsp" "")</font></td>
                </tr>
                <tr>
                    <td>#springMessage("label.salary")</td>
                    <td>#springFormInput("newEmployee.salary" "")</td>
                    <td><font color="red">#springShowErrors("&nbsp" "")</font></td>
                </tr>
                <tr>
                    <td>#springMessage("label.birthdate")</td>
                    <td>#springFormInput("newEmployee.birthday" "")</td>
                    <td><font color="red">#springShowErrors("&nbsp" "")</font></td>
                </tr>
                <tr>
                    <td>#springMessage("label.departament")</td>
                    <td>#springFormSingleSelect("newEmployee.departamentId" $departamentsMap "")</td>
               </tr>

            </table>
                    <input type="submit" value="#springMessage("label.submit")">
        </form>

这是视图控制器的一部分:

@RequestMapping(value="/saveEmployee", method= RequestMethod.GET)
    public ModelAndView newuserForm(){
        ModelAndView model = new ModelAndView("newEmployee");
        Employee empl = new Employee();

        Map departamentsMap = new TreeMap();
        List<Departament> departamentsList = service.listDepartaments();

        //for singleselect of departaments
        for(int i=0; i<departamentsList.size(); i++){
            Departament dep = departamentsList.get(i);
            departamentsMap.put(dep.getDepartamentId(),dep.getTitle() );
        }                    
        model.addObject("departamentsMap",departamentsMap);

        model.getModelMap().put("newEmployee", empl);
        return model;
    }

    @RequestMapping(value="/saveEmployee", method=RequestMethod.POST)
    public String create(@ModelAttribute("newEmployee")Employee empl, BindingResult result){

        employeeValidator.validate(empl, result);
        if(result.hasErrors()){
            return "newEmployee";
        }
        service.saveEmployee(empl);
        return "redirect:/listEmployees";
    }

也许有人知道这种行为的原因?

【问题讨论】:

    标签: spring model-view-controller spring-mvc velocity


    【解决方案1】:

    departamentsMap 在出错时为空...所以请添加 model.addObject("departamentsMap",departamentsMap); 在您的帖子详细信息中,因此当 eeror 发生时它不能为空。

    //Modified this line of code..
    
    
    if(result.hasErrors()){
            Map departamentsMap = new TreeMap();
            List<Departament> departamentsList = service.listDepartaments();
    
            //for singleselect of departaments
            for(int i=0; i<departamentsList.size(); i++){
                Departament dep = departamentsList.get(i);
                departamentsMap.put(dep.getDepartamentId(),dep.getTitle() );
            }                    
            model.addObject("departamentsMap",departamentsMap);
    
    
       return "newEmployee";
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多