3

gitからSpringShowCaseのコードを確認しようとしています

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ページが「HelloWorld」を緑色で表示する場所をどのように認識しているかわかりません。

次に、コントロールを確認したところ、次のことがわかりました。

@Controller
public class SimpleController {

    @RequestMapping("/simple")
    public @ResponseBody String simple() {
        return "Hello world!";
    }

}

どちらが「HelloWorld」をJSPに送信しますが、JSPはそれをどこに配置するかをどのように認識しますか?タグが表示されません

4

1 に答える 1

4

JSPコードの下部にある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メソッドをたどると、応答要素を設定してページにHelloWorldメッセージを表示するこのコードに到達します。

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");
};
于 2013-03-07T13:30:14.353 に答える