当前位置: 首页 > 知识库问答 >
问题:

bean类的属性“fields[0]”无效

阴雪风
2023-03-14

我在和spring合作,我的实体是

myEntity.java

@Entity
public class Ecran {
...
@OneToMany(fetch=FetchType.EAGER, cascade = { CascadeType.ALL } , mappedBy="ecran")
public Set<Fields> fields = new HashSet<>();

...
}

我试图改变像这样的字段的属性

myPage.html

<div th:each="field, itemStat : *{fields}" >

                <div class="row table-responsive-xl mt-3" >
                    <label class="font-weight-medium h5 black-text"  th:text="${field.nom}" for="${field.idJira}"></label>
                    <input type="text" id="${field.id}" class="form-control mb-6" th:field="*{fields[__${itemStat.index}__].value}">
                </div>

            </div>

但它显示了这个错误

2018-08-20 09:09:36.000错误13144--[nio-8092-exec-1]O.A.C.C.C.[.[.[/].[dispatcherServlet]:路径为[]的上下文中servlet[dispatcherServlet]的servlet.Service()引发异常[请求处理失败;嵌套异常为org.SpringFramework.Beans.InvalidPropertyException:bean类[com.kepler.skeleton.domain.model.ecran]的无效属性“fields”引发异常;嵌套异常为org.SpringFramework.Beans.InvalidPropertyException

null

共有1个答案

翁钧
2023-03-14

通过查看您的异常:

...无法从大小为0的集合中获取索引为0的元素,该元素使用属性路径“Fields[0]”访问,其根本原因是..

你能看出问题所在。集合没有元素0。那是因为哈希集没有顺序。您需要索引集合-数组或列表。当将一个集合传递到前端并以有序的方式修改它时,这实际上是一个相当常见的问题。一个简单的解决方案是使用列表而不是集合。

如果您不想有重复,那么只需将ArrayList包装在HashSet周围-将其传递到前端,然后再将其传递回HashSet以去除重复元素。

 类似资料: