根据我的理解,模型属性与每个请求相关联,它们不能在多个请求中存活,直到我们将它们添加为flashAttributes。
我有一个简单的控制器方法,它显示了几个选项供用户选择。但是,这些选项正在使用模型属性附加到thymeleaf模板。
<div class="input-group mb-3" th:each="ingredient : ${recipes.ingredients}">
<div class="input-group-prepend">
<div class="input-group-text">
<input aria-label="Checkbox for following text input" name="ingredient"
th:value="${ingredient.name}" type="checkbox">
</div>
<input aria-label="Text input with checkbox" class="form-control" disabled
th:value="${ingredient.name + ' ' + ingredient.price + 'Rs.'}"
type="text">
</div>
假设“recipes”作为模型属性,它被注入到控制器内的modelMap中。
当bean验证失败时,下面的行执行。
if (errors.hasErrors()) return "selectItem";
selectItem模板被重新渲染,但我在前一个控制器中设置的任何模型属性都会消失。
我在同一个控制器中使用@ModelAttribute方法解决了这个问题,为特定控制器的每个HTTP请求设置模型属性(直到它不在controllerAdvice中以获得全局效果)。
如果我走对了路,我会感到困惑。||有什么优雅的方法可以实现这一点。
为每个请求设置模型属性是一种开销,当我希望它们可用于少数请求映射时。
当你说:
selectItem 模板被重新渲染,但我在以前的控制器中设置的任何模型属性都消失了。
您的意思是,当页面由于验证错误而重新加载时,您的模型属性不再存在,并且百里香叶可能会返回一个错误,因为它无法找到它们,对吗?
如果是这种情况,则必须在 if 语句中手动准备相同的模型属性(即将它们添加到 MapModel 中):
if (errors.hasErrors()) {
map.addAttribute("recipes", recipes);
return "selectItem";
}
或者,如果在控制器中的其他页面上也需要此模型属性,则可以通过使用 ModelAttribute
注释声明方法来减少代码重复,这会将此属性添加到控制器中的所有模型中:
@ModelAttribute("recipes")
public Recipes loadRecipes() {
// get list of Recipes
return list;
}
我不知道我的视图出了什么问题,但它不可能工作,即使设置正确,视图也总是出错。我不知道是否还有其他方法可以做到这一点,但胸腔总是失败。 错误是这样的- 这是我的控制器 我的观点
我尝试使用ThymeLeaf处理模板,但我得到。 这是我的代码: 我试图通过添加这样的前缀来更改路径,但它没有帮助: 此错误可能是由路径问题以外的其他原因引起的吗? 如果需要,我可以给我的项目结构的更多细节。 谢谢 编辑: 这是堆栈跟踪,它可能会有所帮助:
我用百里香模板发送电子邮件。我有一个模板,比如: 如果为空或,我不想发送电子邮件。我可以设置任何Thymeleaf属性来生成错误并且不会发送邮件吗?因为在没有值的电子邮件中发送“My name is”没有任何意义。 我从Thymeleaf上下文中获取所有值,变量可能是不同类型的,例如、等。我也尝试了以下方法,但它并没有解决我的问题,因为对象总是可用的:
我在Intellij Idea中使用Spring boot和thymeleaf,并尝试在模板中获取URL的参数,我使用以下代码: 它工作正常,但我想清除错误消息,有什么好方法可以做到这一点吗?
我不明白,如果html模板与我在ModelAndView中获得的属性链接,如何将RESTFull服务的@Controller更改为@RestController 在胸腺叶模板中 但我想进入索引页面,在后台获取用户名 我可以使用ajax来更新标记“p”,但这样使用thymeleaf并没有什么好处,我可以使用jsp。那么,在Rest时使用thymeleaf的最佳方式是什么?它是否合理?
我正在创建一个简单的HTML表单以及Thymelaf,我在我的Spring Boot应用程序中使用它。 在表单中,我指定了以下语句: 但是,表单中显示的值不是评级,而是0。 删除0后,占位符最终会出现。 编辑< br >显然,百里香叶似乎导致了这里的问题。