当使用displaytag时,它为分页和排序生成的URL对于IE来说太长了。
有没有办法解决这个问题,而无需借助外部分页和排序?
干杯。
答案 0 :(得分:2)
希望这会对某人有所帮助。如果有另一种方式,请告诉我。
我解决这个问题的方法是排除显示表标签上的所有参数。
<display:table excludedParams="*"> ... </display:table>
这意味着网址没有填满参数。
很好,但是如何处理我们正在使用的对象列表呢?
我是通过在上下文请求中设置属性来完成此操作的。当我使用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");
}
然后,如果页面/请求,您可以在整个生命周期中设置并获取它们。
答案 1 :(得分:2)
我遇到了类似的问题,其中所有表单字段的url在分页和排序期间都被附加到url。这是通过识别下面提到的所有分页链接来解决的,它通过它形成的唯一标题(转到页面)和内部htmls(例如'Next''Prev'等形成它。
此处解释了以下方法中的javascript参数 1)head1 / head2 - 排序列名称传递。 2)formName - 表单的名称, 3)masterName - 控制器中调用的方法
我在名为'strNamesearch'的输入框上有一个逻辑,我的调用方法会根据该输入框进行更改。
另请注意,执行此操作后,请不要忘记在display:table tag
中添加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();
}
这是一种解决方法,对我们来说效果很好。我希望它也适合你。