我在为每个对象编制索引时遇到问题。我有一个从存储库中提取的列表,称为MonthlyAcct。我想遍历thymeleaf html文件中的列表,并显示在表中显示为可编辑输入字段的MonthlyAcct对象的每个属性。我不断收到以下错误消息:不支持索引为“ monthAcct”类型,或者当前,错误为:“ Bean名称为“ monthAcct [0]”的BindingResult和普通目标对象都不能用作请求属性。”
这绝对是我如何设置th:field的问题,就像我将其切换为th:name一样,它显示出来并且不会引发错误。我是否必须将其转化为表格才能使用th:field?
我在项目的其他区域中使用了相同的样式/策略,并且可以使用,所以我不确定为什么这次这种设置无法正常工作。有任何想法吗?我在此页面上还有另一种表单,用于更新客户端类的详细信息,这会引起任何问题吗?
仅供参考,我在th:each语句中尝试了*和$,并在th:field中尝试了两个符号。两者都抛出上述错误。
<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;
}
}
我从存储库中获取了monthAcct列表:
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();
}
最佳答案
* {monthAcct}应该是$ {monthAcct},因为您要在modelAndView或案例模型中设置值。 monthAcct不是th:object的字段。