【问题标题】:Use value of a local variable as global in thymeleaf在 thymeleaf 中使用局部变量的值作为全局变量
【发布时间】:2021-03-09 13:22:59
【问题描述】:

我有一个变量可以在 thymeleaf 的每个块中获取。我想将该变量发送到我的控制器中的某个方法。限制是该变量是在一个块内获得的,这使得它成为本地的,无法访问全局。因此我在尝试使用它时遇到错误。如何在范围内移动以获取变量,以便在百里香中全局使用它。

           <form th:action="@{/masomo/somo(date=${dateMpya.date})}" method="POST">
            <select id="date" name="date" required="true">
                <option value="none" selected disabled hidden > 
                    Select a Date     
               </option>   

            <th:block th:each="somoChagua : ${masomoChagua}">
            <option th:each="dateMpya: ${somoChagua}"  th:value="${dateMpya}" th:text="${dateMpya.date}" ></option>
            
            </th:block>

            </select>
            <button type="submit"><i class="fa fa-search"></i> </button>  
            </form>
             

【问题讨论】:

    标签: java spring spring-boot spring-mvc thymeleaf


    【解决方案1】:

    每个“somoChagua”可以有许多不同的“dateMpya”对象。

    但是只有一个提交按钮。

    那么提交按钮的值应该使用哪个“dateMpya”?

    我认为您在这里实际尝试做的是获取用户在下拉列表中选择的“dateMpya”的值。对吗?

    如果是这种情况,则无需向提交按钮添加任何属性。您可以使用选择元素的名称访问该值,即“日期”。

    编辑:出于同样的原因,您还需要删除表单操作的(date=${dateMpya.date}) 部分。下拉选择的值会自动提交到选择元素“日期”的名称下,不需要指定。

    【讨论】:

    • 我已经删除了提交按钮中的属性但是我仍然得到 [Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'date' cannot be found on null]
    • 其实我的错。我不认为这个问题实际上是一个空的 dateMpya。我现在看到了问题:您还需要在表单操作中删除此(date=${dateMpya.date}),原因与提交按钮相同。 "dateMpya" 在选项元素之外不可用
    • 发布该值是因为 HTML 表单就是这样工作的。选择元素的值将发布到名为“日期”的 URL,因为这是选择元素的名称。这种行为不需要百里香
    • 我的意思是你不需要任何 thymeleaf 的特殊功能来使其工作。它会起作用的。无需在表单操作 URL 中添加任何特殊内容,没有它就可以工作。
    猜你喜欢
    • 2023-01-05
    • 2016-06-05
    • 2019-07-24
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2019-04-04
    相关资源
    最近更新 更多