我在为每个对象编制索引时遇到问题。我有一个从存储库中提取的列表,称为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的字段。

07-28 08:19