我有一个百里香[{1}}我以标准方式访问我的模型属性:
index.html
现在我执行<body>
<th:block th:text="${myModel}"></th:block>
</body>
并从我的控制器获取另一个ajax request
并将其设置为我的html part
。
index.html
ajax请求和页面呈现按预期工作。但是在html的这部分中,我无法访问我之前的设置 @GetMapping(value="/part")
public String getPart(Model model) {
model.addAttribute("somePart", "hello partial html!");
return "part";
}
。有没有办法实现这个目标?
答案 0 :(得分:0)
首先抱歉我正在使用手机。 XHR请求的行为与Spring MVC中的常规Http请求不同。使用Ajax获取模型属性有点困难,因为Ajax不期望视图(模型注入其数据)。您有2个选择来解决您的问题。
1-最简单的方法是,将您的数据直接添加到响应正文中,使用“@ResponseBody”注释您的处理程序并返回您想要的数据而不是视图名称。
2-有点扭曲,你的处理程序方法应该返回一个'ModelAndView',但Ajax将收到完整的视图,当我说“完整视图”时,我指的是你想要渲染模型的视图中的所有文本。
如果您没有看到我的意思,我会编辑此答案以添加一些代码。
<强> CODE 强>
我做了测试:
@GetMapping( "/part" )
public ModelAndView getPart( Map<String, String> model ) {
model.put( "somePart", "hello partial html!" );
return new ModelAndView( "part", model ); // part = the view name
}
观看代码part.html
:
<div>
<h1>This is the view containing the model : ${somePart} </h1>
<p>With other information....</p>
<p>Please note that this view doesn't contain neither "head" nor "body" tags</p>
</div>
Ajax电话:编辑2
$(function(){
var myModel = "${myModel}"; //get the value of your previous model
$.get("part",function(data){
$("div.show-part-view").html(data);//in index.html add a div tag with class="show-part-view"
$("p.my-model").html(myModel); // in the part.html view add <p class="my-model">...
});
在index.html
中将<div class="show-part-view">...</div>
添加到您想要的位置。