как связать теги f: input с динамически передаваемой сущностью? - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть класс, который расширяет 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 для поля зарплаты, но как связать эту форму? заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...