2

displaytag を使用すると、ページングと並べ替えのために生成される URL が IE には長すぎます。

外部のページングとソートに頼らずにこれを回避する方法はありますか?

乾杯。

4

2 に答える 2

3

うまくいけば、これは誰かを助けるでしょう。また、他に方法があれば教えてください。

これを回避する方法は、表示テーブル タグのすべてのパラメーターを除外することです。

<display:table excludedParams="*"> ... </display:table>

これは、URL がパラメーターでいっぱいにならないことを意味します。

すばらしいですが、使用しているオブジェクトのリストをどのように管理しているのでしょうか。

コンテキストのリクエストに属性を設定することでこれを行いました。そして、Stripes フレームワークを使用しているので、ActionBeanContext を使用してこれを行いました。

public class SchemeActionBeanContext extends ActionBeanContext {
    public void setThings(List<Things> things) {    
        getRequest().getSession().setAttribute("stuff", things);
    }

    public List<Things> getThings() {
        return (List<Things>)getRequest().getSession().getAttribute("stuff");
    }

そして、ページ/リクエストのライフサイクル全体でそれらを設定および取得できます。

于 2010-06-24T12:17:51.530 に答える
2

ページネーションとソート中に、すべてのフォーム フィールドを含む URL が URL に追加されるという同様の問題に直面していました。これは、以下で説明するすべてのページネーション リンクを、それが形成する一意のタイトル (ページに移動) とそれが形成する 'Next' 'Prev' などの内部 html のいずれかで識別することによって解決されました。

以下のメソッドの JavaScript パラメータは、ここで説明されています。1) head1/head2 - 渡された列名の並べ替え。2) formName - フォームの名前、3) masterName - コントローラーで呼び出されるメソッド

「strNamesearch」という名前の入力ボックスにロジックがあり、それに基づいて呼び出しメソッドが変更されます。

また、これを行ったら、excludedParams="*" を display:table タグに追加することを忘れないでください。

コードは次のとおりです。

function findAnchorGen(head1,head2,formName,masterName) {
    var formObj = eval("document."+formName);
    var methodName;
    var strSearch = trim(formObj.strNamesearch.value);
    if(strSearch == null || strSearch == '') {
        methodNameP = "fetch"+masterName;
    } else {
        methodNameP = "search"+masterName;
    }
    var anchors = document.links; // your anchor collection   
    var i = anchors.length; 
    while (i--) {
        var a = anchors[i];     
        var aRef = a.href;
        var aTitle = a.title;
        index = aTitle.indexOf("Go to page");
        var inHtml = a.innerHTML;

        if(index >= 0 || inHtml == 'Last' || inHtml == 'Next' || inHtml == 'First' || inHtml == 'Prev' || inHtml == head1 || inHtml == head2) {
            //alert("Ref = " + aRef + " | title = " + aTitle + " | inner html = " + a.innerHTML);
            a.href="#";
            a.onclick = (function(aRef,formName,methodNameP){return function(){fSubmit(aRef,formName,methodNameP);}})(aRef,formName,methodNameP);
        }
    } 
}

function fSubmitGen(aRef,formName,methodNameP) {
    var formObj = eval("document."+formName);
    formObj.action = aRef;
    formObj.method.value = methodNameP;
    formObj.submit();
}

これは回避策であり、うまく機能しています。それがあなたにとってもうまくいくことを願っています。

于 2011-02-25T06:59:58.230 に答える