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 上。这可以通过识别下面提到的所有分页链接来解决,方法是通过它形成的唯一标题(转到页面)和它形成的内部 html,例如“下一个”“上一个”等。

以下方法中的 javascript 参数在此处解释 1) head1/head2 - 对传递的列名进行排序。2) formName - 表单名称,3) masterName - 在控制器中调用的方法

我在名为“strNamesearch”的输入框中有一个逻辑,在此基础上我的调用方法会发生变化。

另请注意,执行此操作后,不要忘记在 display:table 标记中添加 excludeParams="*"

这是代码:

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 回答