我正在使用Spring MVC portlet,我需要实现一个带外部分页的显示标记。为此,我在JSP中定义了我的表:
<portlet:actionURL var="viewListURL">
<portlet:param name='action' value='${ServletContextKeys.MY_ACTION_METHOD}'/>
</portlet:actionURL>
<display:table name="${whateverList}"
requestURI="${viewListURL}"
class="displayTagTable"
export="true"
uid="item"
pagesize="10"
partialList="true"
sort="external"
defaultsort="1"
size="${ServletContextKeys.SC_LIST_SIZE}">
...
问题在于,当我单击任何按钮进行分页时,displaytag会将我重定向到渲染阶段,而不是我想要的动作阶段。我究竟做错了什么?有任何想法吗..? 非常感谢
编辑:我可以在URL中看到参数p_p_url_type = 0(渲染阶段)。这对我来说没有意义,因为我正在调用一个动作网址,但也许只需将此参数更改为p_p_url_type = 1即可。但是,我只是不知道如何...任何想法?
http://localhost:8080/wsdes/user/sifo3/home?p_p_id=SifoIIIweb_WAR_sifo3economicoweb_INSTANCE_s8jH&p_p_lifecycle=1&p_p_url_type=0&p_p_state=maximized&p_p_mode=view&_SifoIIIweb_WAR_sifo3economicoweb_INSTANCE_s8jH_action=consultaJustificantes&_SifoIIIweb_WAR_sifo3economicoweb_INSTANCE_s8jH_implicitModel=true&_SifoIIIweb_WAR_sifo3economicoweb_INSTANCE_s8jH_d-49489-p=2
答案 0 :(得分:0)
addParameter
方法中找到它:
if (PARAM_TYPE.equals(name))
{
if (TYPE_RENDER.equals(value))
{
this.setAction(false);
}
else if (TYPE_ACTION.equals(value))
{
this.setAction(true);
}
还有:
private static final String PARAM_PREFIX = "portlet:";
public static final String PARAM_TYPE = PARAM_PREFIX + "type";
public static final String TYPE_ACTION = "action";
显然,如果您需要一个名为portlet:type
且值为action
的参数,以使DisplayTag生成一个Action URL。我没有测试过自己,所以让我知道它是否有效。
答案 1 :(得分:0)
我仍然不知道原因,但我修复了此问题,将Portlets的显示标记(displaytag-portlet.jar)更改为标准displaytag,并从displaytag.properties文件中删除factory.requestHelper属性: factory.requestHelper = org.displaytag.portlet.PortletRequestHelperFactory
使用普通的displaytag库而不是portlet来修复我的问题。