动态字段thymeleaf列表迭代

时间:2015-06-15 13:56:00

标签: spring spring-mvc spring-boot thymeleaf

我收到了一个非常奇怪的错误!在列表上迭代时,百万美元将索引识别为我的bean的属性,而不是索引值!

2015-06-15 15:48:25.453 ERROR 7764 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "phoneStat.index" (/custom:89)] with root cause

org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 10): Property or field 'index' cannot be found on object of type 'com.ubleam.corporate.server.model.Phone' - maybe not public?

我在这里做错了什么?请帮忙!

OnMouseDown()

2 个答案:

答案 0 :(得分:8)

实际上,当将字段绑定到表单时,为了访问带有th:doc指定的每个列表的列表,我们应该使用两个变量itemphoneStat

<div th:each="item, phoneStat : *{phones}">
    <select th:field="*{phones[__${phoneStat.index}__].variety}">
        <option></option>
    </select>
    <div class=" input-field col s4">
        <input class="validate" th:field="*{phones[__${phoneStat.index}__].number}"
               th:id="${'phonenumber-'+ phones[__${phoneStat.index}__]}" type="text"/>
        <label th:for="${'phonenumber-'+ phones[__${phoneStat.index}__]}"> Mobile</label>
    </div>
</div>

答案 1 :(得分:1)

<强>简单

如果在th:each之前定义了1个变量,

th:each将返回集合中的对象。不是对象元数据。如果需要索引,则必须使用2个变量。

http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#using-theach

详细

为什么使用{phones[__${phoneStat.index}__].number}phoneStat实际上是迭代的对象。

您可以按照以下方式执行此操作。

<div th:each="phone : *{phones}">
    <select th:field="${phone.variety}" >
        <option></option>
    </select>
    <div class="input-field col s4" >
        <label>Mobile</label>
        <input th:field="${phone.number}" type="text" class="validate"/> 
    </div>
</div>