首页 > 解决方案 > thymealf 一次迭代

问题描述

在我的域中,我有一个Commessa包含一个列表的列表,programmazioneTransient其中包含一个列表varieTransient

使用 thymeleaf,我创建了一个视图,显示第二个列表的每个元素,并完美运行。现在我添加了显示varieTransient列表的循环,但我有这个错误:

引起:org.attoparser.ParseException:评估 SpringEL 表达式的异常:“programmazioneTransient+${prgStat.index}.varieTransient”(模板:“views/programmazione/show” - 第 92 行,第 19 列)在 org.attoparser.MarkupParser.parseDocument (MarkupParser.java:393)~[attoparser-2.0.4.RELEASE.jar:2.0.4.RELEASE] at org.attoparser.MarkupParser.parse(MarkupParser.java:257)~[attoparser-2.0.4.RELEASE。 jar:2.0.4.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ~[thymeleaf-3.0.8.RELEASE.jar:3.0.8.RELEASE] ... 102 常见帧省略引起:org.thymeleaf.exceptions.TemplateProcessingException:异常评估SpringEL表达式:“programmazioneTransient+${prgStat.index}.varieTransient”(模板:“视图/programmazione/show” - 第 92 行,第 19 列)在 org.thymeleaf.spring4.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:290) ~[thymeleaf-spring4-3.0.8.RELEASE.jar:3.0.8。发布]

我的html页面如下:

<th:block th:each="prg, prgStat : *{programmazioneTransient}">
        <tr th:id="riga+${prgStat.index}">
            <td scope="col" style="width: 15%!important;">
                <input type="text" th:id="sperimentatore+${prgStat.index}" th:name="programmazioneTransient[+${prgStat.index}+].sperimentatore" class="text-center form-control-plaintext" readonly="readonly" th:value="${#strings.capitalizeWords(prg.sperimentatoreTransient)}"></input>
            </td>
            <td scope="col" style="width: 15%!important;">
                <input type="text" th:id="aiutoSperimentatore+${prgStat.index}" th:name="programmazioneTransient[+${prgStat.index}+].aiutoSperimentatore" class="text-center form-control-plaintext" readonly="readonly" th:value="${#strings.capitalizeWords(prg.aiutoSperimentatoreTransient)}"></input>
            </td>
                            ...
            <th:block th:each="v, vInd : *{programmazioneTransient+${prgStat.index}.varieTransient}" > 
                <td scope="col" >
                    <input type="number" th:id="v.quantita+*{#lists.size(programmazioneTransient)}" th:name="varieTransient[+${vInd.index}+].numeroProgrammate" class="text-center form-control-plaintext" readonly="readonly" th:value="varieTransient[+${vInd.index}+].numeroProgrammate"></input>
                </td>
            </th:block> 
        </tr> 
</th:block>

有什么建议吗?

标签: javaspringforeachthymeleaf

解决方案


与其尝试索引,不如只使用局部变量?

<th:block th:each="prg, prgStat : *{programmazioneTransient}">
    .
    .
    .
    <th:block th:each="v, vInd : ${prg.varieTransient}">
        .
        .
        .
    </th:block>
</th:block>

如果你确实想使用索引,你应该记住,一般来说,你不应该嵌套${...}表达式——除非在特殊情况下。该表达式如下所示:

<th:block th:each="v, vInd : *{programmazioneTransient[prgStat.index].varieTransient}">
    .
    .
    .
</th:block>

推荐阅读