我有一个扩展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的参数类型匹配? 我了解薪水字段没有明确的获取/设置方法,但是如何绑定此表格?预先感谢!