我正在尝试从git
查看Spring Show Case中的代码https://github.com/SpringSource/spring-mvc-showcase
但是如果你点击简单的链接,你会在第一页上遗漏一些东西,你会得到绿色的“Hello World”。
所以我查看了JSP页面,发现了这段代码:
<ul>
<li>
<a id="simpleLink" class="textLink" href="<c:url value="/simple" />">GET /simple</a>
</li>
<li>
<a id="simpleRevisited" class="textLink" href="<c:url value="/simple/revisited" />">GET /simple/revisited</a>
</li>
</ul>
对控制器的调用在哪里,但我没看到JSP页面如何知道将“Hello World”放在绿色的哪个位置。
然后我回顾了控件,发现:@Controller
public class SimpleController {
@RequestMapping("/simple")
public @ResponseBody String simple() {
return "Hello world!";
}
}
将“Hello World”发布到JSP中,但JSP如何知道将它放在哪里?我看不到任何标签
答案 0 :(得分:4)
看起来JSP code底部的jQuery中正在发生魔术。对于Hello World教程来说,这有点复杂,但除此之外。
点击链接后,使用AJAX从服务器请求数据:
$("a.textLink").click(function(){
var link = $(this);
$.ajax({ url: link.attr("href"), dataType: "text", success: function(text) { MvcUtil.showSuccessResponse(text, link); }, error: function(xhr) { MvcUtil.showErrorResponse(xhr.responseText, link); }});
return false;
});
最后,通过JavaScript方法,您可以访问这段代码,设置响应元素并在页面上显示 Hello World 消息。
MvcUtil.showResponse = function(type, text, element) {
var responseElementId = element.attr("id") + "Response";
var responseElement = $("#" + responseElementId);
if (responseElement.length == 0) {
responseElement = $('<span id="' + responseElementId + '" class="' + type + '" style="display:none">' + text + '</span>').insertAfter(element);
} else {
responseElement.replaceWith('<span id="' + responseElementId + '" class="' + type + '" style="display:none">' + text + '</span>');
responseElement = $("#" + responseElementId);
}
responseElement.fadeIn("slow");
};