如何将f:input标签绑定到动态传递的实体?

时间:2019-04-21 11:02:33

标签: java spring spring-mvc jsp jstl

我有一个扩展BaseEntity(BaseEntity只有ID)的类

public class Spravochnik extends BaseEntity {

    private List<String> columnName;
    private List<List<String>> valuesInRows;
    public List<String> getColumnName() {
        return columnName;
    }
    public void setColumnName(List<String> columnName) {
        this.columnName = columnName;
    }
    public List<List<String>> getValuesInRows() {
        return valuesInRows;
    }
    public void setValuesInRows(List<List<String>> valuesInRows) {
        this.valuesInRows = valuesInRows;
    }



}

这是一个映射到数据库中一些表的类。 BaseEntity包含ID字段(在任何表中都是常见的),在这里,我还有所有其他字段。我可以按表名列出专用表,也可以按ID从该表中选择一项。我现在正在尝试编辑此选定的项目,并将spring输入标签绑定到相应的字段。问题是,我仅对ID具有显式的getter / setter,而其他字段位于这些列表中。我也有一个行映射器。 这是我的jsp的表单部分:

<table class="table">
 <thead class="thead-dark">
  <tr>
   <c:forEach var="columnName" items="${sprav.columnName}">                                  
    <th>${columnName}</th>
   </c:forEach>
  </tr>
 </thead>
<tbody>
  <c:forEach var="valuesInRows" items="${sprav.valuesInRows}">
    <tr>
  <c:forEach var="valuesInRow" items="${valuesInRows}">                                      
     <td>${valuesInRow}</td>
  </c:forEach>                                
    </tr>
<s:url var="url_save"  value="/spravochnik/save"/>
<f:form method="POST" action="${url_save}" modelAttribute="sprav">
  <tr>
   <c:forEach var="columnName" items="${sprav.columnName}">
     <td><f:input path="${columnName}"></f:input></td>                                   
   </c:forEach>
  </tr>
 </f:form>
</c:forEach>
</tbody>
</table

如果我没有表单(表单之前的部分),则可以成功看到渲染的行。当我尝试添加表单时,它说直接在id之后的值“例如薪水”不会被绑定。 我的控制器部分:

@RequestMapping(value = "/edit", method = { RequestMethod.POST, RequestMethod.GET })
    public ModelAndView edit(@RequestParam("id") String id, ModelMap model) {
        Spravochnik sprav = spravochnikService.selectOne(id);

        model.addAttribute("sprav", sprav);

        return new ModelAndView("edit", model);
    }

我的错误: Bean类[net.lacit.militaryRegistr.entity.Spravochnik]的属性'salary'无效:Bean属性'salary'不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配? 我了解薪水字段没有明确的获取/设置方法,但是如何绑定此表格?预先感谢!

0 个答案:

没有答案