我有一个名为
@会话属性(“我的新属性”)
这是在我的控制器的顶部定义的。当我点击我的第二个端点,post,值不会在thymleaf中从空白更新为显示字符串,但它会将其打印到我的控制台。我有点疯了。以下是我的控制器文件和模板:
@Controller
@SessionAttributes("myNewAttribute")
public class SpringFileController {
@GetMapping("/pageone")
public String displayPageOne(Model model) {
return "pageone";
}
@PostMapping("/clickedsavebutton")
public String handleSaveButton(Model model){
model.addAttribute("myNewAttribute","catnip");
String valueToDisplay = (String)model.getAttribute("myNewAttribute");
System.out.println(valueToDisplay);
return "pageone";
}
}
我的模板
<p th:text="${myNewAttribute}"></p>
<!--the save button, other things, wtc.. -->
所以在我的控制台中,当我点击保存时,我得到了“猫薄荷”,但“猫薄荷”并没有显示在页面上,直到我刷新页面。
edit:我在模板中的post调用后添加了window.location.reload(),使属性显示出来,但是如果我这样做的话,我会丢失页面上已经更改的其他内容
2条答案
按热度按时间cngwdvgl1#
这是预期行为,Thymeleaf是一个呈现引擎,因此在页面初始加载后无法更改内容。
为了得到想要的效果,你必须重新加载(部分)你的网页。这可以是一个完整的刷新或刷新一个div或字段使用类似 AJAX /javascript。
kmbjn2e32#
我添加了$(“#所需字段div”).load(窗口.位置.href +“#所需字段div”);到我的功能上的保存按钮,并得到了这个工作。谢谢所有的帮助!