Java 在thymeleaf中将局部变量的值用作全局变量
我有一个变量,它在thymeleaf中的每个块中获得。我想将该变量发送到控制器中的某个方法。限制是变量是在一个块中获取的,这使得它是局部的,而不是全局的。因此,我在尝试使用它时出错。如何在范围内移动以获取变量,以便在thymeleaf中全局使用它Java 在thymeleaf中将局部变量的值用作全局变量,java,spring,spring-boot,spring-mvc,thymeleaf,Java,Spring,Spring Boot,Spring Mvc,Thymeleaf,我有一个变量,它在thymeleaf中的每个块中获得。我想将该变量发送到控制器中的某个方法。限制是变量是在一个块中获取的,这使得它是局部的,而不是全局的。因此,我在尝试使用它时出错。如何在范围内移动以获取变量,以便在thymeleaf中全局使用它 <form th:action="@{/masomo/somo(date=${dateMpya.date})}" method="POST"> <s
<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>
选择一个日期
对于每个“somoChagua”,可以有许多不同的“dateMpya”对象
但是只有一个提交按钮
那么提交按钮值应该使用哪个“dateMpya”
我认为您实际上要做的是获取用户在下拉列表中选择的“dateMpya”的值。是这样吗
如果是这种情况,则无需向submit按钮添加任何属性。您可以使用select元素的名称“date”来访问该值
编辑:出于同样的原因,您还需要删除表单操作的
(date=${dateMpya.date})
部分。下拉列表中选择的值将以选择元素“日期”的名称自动提交,无需指定该值。我已删除了提交按钮中的属性,但仍将获得[原因:org.springframework.expression.spel.SpelEvaluationException:EL1007E:在null上找不到属性或字段'date'。实际上,我的错误。我不认为问题实际上是null dateMpya。我现在看到了问题:您还需要删除此(date=${dateMpya.date})
在表单操作中,由于与提交按钮相同的原因,“dateMpya”在选项元素之外不可用。该值是发布的,因为HTML表单就是这样工作的。select元素的值将以名称“date”发布到该URL因为这是select元素的名称。此行为不需要thymeleaf。我的意思是,您不需要任何thymeleaf特殊功能来使其工作。它只会工作。不需要在表单操作URL中添加任何特殊内容,它将在没有该功能的情况下工作。让我们来看看。