Spring MVC Samples中的“Hello World”来自哪里?

时间:2013-03-07 13:21:01

标签: java jquery spring spring-mvc

我正在尝试从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如何知道将它放在哪里?我看不到任何标签

1 个答案:

答案 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");
};