1

Java Spring Framework に Ajax ベースのタブ切り替えアプリケーションがあり、戻るボタンのシナリオを処理する必要があります。以下のコードを指定することで正常に実行されました。現在、直面している効果は、タブ切り替えジャンプよりも最初のページ読み込みであり、特定の履歴が選択されたタブに表示されます。誰かがこれに関して助けてくれたら、それは素晴らしいことです。

var innerTab = "";
function navigateAjaxHtmlSetup(target,response){
        if (typeof target == 'undefined') 
        target = "#ajax-container";  
        $(target).html(response);
        $("input[check-with-select]:checked").parent("label").parent("td").nextUntil(":last").find('select').attr('required', 'required');
        $(target).focus();
        $("#ajax-loader").hide();    
}
function pushStateToHistory(){
    var history = window.history;
    var location = window.location.pathname;
    history.pushState({}, "GHFP", location+activeTabs());
}

function anchorAjaxCall(self,url,state){
        $.ajax({
            type: 'GET',
            url: url,
            dataType: "html",
            success: function (response) {
                var target = self.attr('targeto');
                navigateAjaxHtmlSetup(target,response);
                if (state)
                    pushStateToHistory();
//              if(innerTab != ""){
//                  var anchor  = $("a#"+innerTab);
//                  innerTab = "";
//                  anchorAjaxCall(anchor,anchor.attr('href'));
//              }
            }
        });
}

function activeTabs(){
    selectedTabList = $(".tabs-nav a.active");
    var activeURL;
    if (selectedTabList.length > 0){
        activeURL="#";
        selectedTabList.each(function(index,el){
            activeURL +="/"+$(el).attr('id');
        });
    }else{
        activeURL="";
    }   
    return activeURL;
}

function urlAjaxNavigationHandling(hash){
    if (hash.indexOf('/')!=-1)
    {
        var selectedTabList = hash.substring(1,hash.length).split('/');
        var anchor  = $("a#"+selectedTabList[1]);
        anchorAjaxCall(anchor,anchor.attr('href'),false);
        if (selectedTabList.length > 1)
            innerTab = selectedTabList[2];
    }  
}
window.onpopstate = function(e) {
    urlAjaxNavigationHandling(window.location.hash);
};

私の質問はSpringやJavaとはまったく関係がありませんでしたが、Ajaxベースアプリケーションを実装するためにグーグルで検索した場合は、それらをタグとして指定するだけです。Ruby on RailsとしてのSpring FrameworkのJQueryの組み込みサポートが見つからなかったので、これは彼を助けるかもしれません

4

1 に答える 1

0

Spring Framework は Rails とは異なり、Grails は Rails に近づきますが、Groovy を使用します。

あなたの問題の解決策は、すでに試しているように、基本的にブラウザの履歴を操作することです。私が追加できる唯一の考えは、HTML5 History API http://diveintohtml5.info/history.htmlを見て、すでにルーターをサポートしているhttp://backbonejs.org/のような js フレームワークの使用を検討する必要があるということです。

于 2013-04-19T11:35:43.713 に答える