روابط DisplayTag وروابط ترقيم الصفحات (URL) التي تم إنشاؤها طويل جدًا

StackOverflow https://stackoverflow.com/questions/3094603

  •  29-09-2019
  •  | 
  •  

سؤال

عند استخدام DisplayTag عنوان URL الذي يولده للترحيل والفرز طويل جدًا بالنسبة إلى IE.

هل هناك طريقة للتغلب على هذا دون اللجوء إلى الترحيل الخارجي والفرز؟

هتافات.

هل كانت مفيدة؟

المحلول

نأمل أن يساعد هذا شخص ما. وإذا كان هناك طريقة أخرى ، فأخبرني بذلك.

الطريقة التي حصلت بها حول هذا هو استبعاد جميع المعلمات على علامة جدول العرض.

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

وبعد ذلك يمكنك ضبطها والحصول عليها خلال دورة الحياة إذا كانت الصفحة/الطلب.

نصائح أخرى

كنت أواجه مشكلة مماثلة حيث تم إلحاق URL مع جميع حقول النموذج بعنوان URL أثناء ترقيم الصفحات والفرز. تم حل هذا من خلال تحديد جميع روابط ترقيم الصفحات المذكورة أدناه إما عن العنوان الفريد الذي يشكله (انتقل إلى الصفحة) و HTMLs الداخلية مثل "التالي" السابق "وما إلى ذلك.

يتم شرح معاملات JavaScript في الطريقة أدناه هنا 1) Head1/Head2 - تم تمرير أسماء الأعمدة الفرز. 2) FormName - اسم النموذج ، 3) MasterName - الطريقة التي تسمى في وحدة التحكم الخاصة بك

لدي منطق على مربع إدخال يسمى "StrNamesearch" الذي تتغير على أساس طريقة الاتصال الخاصة بي.

لاحظ أيضًا ، بمجرد القيام بذلك ، لا تنس إضافة ExcludedParams = "*" في العرض: علامة الجدول

هنا هو الرمز:

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();
}

هذا حل بديل ويعمل بشكل جيد بالنسبة لنا. أتمنى أن يناسبك أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top