Java 在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

我有一个变量,它在thymeleaf中的每个块中获得。我想将该变量发送到控制器中的某个方法。限制是变量是在一个块中获取的,这使得它是局部的,而不是全局的。因此,我在尝试使用它时出错。如何在范围内移动以获取变量,以便在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>
             

选择一个日期

对于每个“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中添加任何特殊内容,它将在没有该功能的情况下工作。让我们来看看。