У меня проблемы с индексацией для каждого объекта. У меня есть список, который я извлекаю из хранилища, который называется MonthlyAcct. Я хочу перебрать список в файле thymeleaf html и показать каждое свойство объекта MonthlyAcct, отображаемое в виде редактируемого поля ввода внутри таблицы. Я продолжаю получать сообщения о том, что индексирование в тип 'monthAcct' не поддерживается, или в настоящее время возникает ошибка: "Ни BindingResult, ни простой целевой объект для имени компонента" monthAcct [0] "не доступны в качестве атрибута запроса". Это определенно проблема с тем, как я настроил th: field, как будто я переключаю его на th: name, он появляется и не выдает ошибок. Должен ли я сделать это в форме, чтобы заставить th: field работать? Я использовал этот же стиль / tacti c в других областях моего проекта, и он работает, поэтому я не уверен, почему на этот раз этот тип настройки не работает. Любые идеи? У меня также есть другая форма на этой странице, которая обновляет детали для класса клиента, может ли это вызывать какие-либо проблемы?
Просто для справки я пробовал * и $ с оператором th: each, а также пробовал оба символа с полем th :. Оба выдают вышеупомянутую ошибку.
<table class="table table-striped" data-toggle="table" data-show-toggle="true" data-classes="table-no-bordered" data-striped="true" data-search="true" data-show-columns="true" >
<thead>
<th>year</th>
<th>January</th>
</thead>
<tbody>
<tr th:each="acct, stat : ${monthAcct}">
<td th:text="${acct.year}"></td>
<td>
<input type="number" class="text-left form-control" th:field="${monthAcct[__${stat.index}__].janAmt}"/>
</td>
</tr>
</tbody>
</table>
В контроллере:
@RequestMapping(value="/accounting/client/{id}")
public String accountingDetails(@PathVariable("id")Client client, MonthlyAccountingTracker monthlyAccountingTracker, Model model) {
List<MonthlyAccountingTracker> monthAcct = monthlyAccountingTrackerRepository.findByClient(client);
model.addAttribute("client",clientRepository.findById(client.getId()));
model.addAttribute("monthAcct",monthAcct);
return "accounting";
}
@DynamicUpdate
@Entity
@Table(name="MonthlyMinAcctTracker")
@EntityListeners(AuditingEntityListener.class)
public class MonthlyAccountingTracker {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@ManyToOne
@JoinColumn(name="client")
private Client client;
private BigDecimal year;
private BigDecimal janAmt;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
public BigDecimal getJanAmt() {
return janAmt;
}
public void setJanAmt(BigDecimal janAmt) {
this.janAmt = janAmt;
}
}
Я получаю свой список месячных действий из хранилища:
public interface MonthlyAccountingTrackerRepository extends CrudRepository<MonthlyAccountingTracker,Long>, JpaSpecificationExecutor {
MonthlyAccountingTracker save(MonthlyAccountingTracker entity);
MonthlyAccountingTracker findById(Long id);
List<MonthlyAccountingTracker> findByClient(Client client);
void delete(MonthlyAccountingTracker entity);
List<MonthlyAccountingTracker> findAll();
}