У меня есть класс, который расширяет BaseEntity (BaseEntity имеет только идентификаторы)
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 содержит поле идентификатора (общее для любой таблицы), и здесь у меня есть все остальные поля. Я могу перечислить споэфициозную таблицу по имени таблицы, а также выбрать один элемент из этой таблицы по идентификатору. Я сейчас пытаюсь отредактировать этот выбранный элемент и привязать пружинные входные теги к соответствующим полям. Проблема в том, что у меня есть явные методы получения / установки только для идентификатора, а другие поля находятся в этих списках. У меня тоже есть гребец.
Это часть формы моего 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
Я успешно вижу отображаемую строку, если у меня нет формы (часть перед формой). Когда я пытаюсь добавить форму, она говорит, что значение «например, зарплата», которое идет сразу после идентификатора, не привязывается.
Моя часть контроллера:
@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);
}
Моя ошибка:
Недопустимое свойство 'salary' класса bean-компонента [net.lacit.militaryRegistr.entity.Spravochnik]: свойство beary 'salary' не доступно для чтения или имеет недопустимый метод получения: соответствует ли возвращаемый тип получателя параметру типа установщика?
Я понимаю, что нет явного getter / setter для поля зарплаты, но как связать эту форму? заранее спасибо!