Liferay友好的URL参数丢失

时间:2014-11-10 14:45:21

标签: xml struts2 liferay portlet friendly-url

我在friendly-url-routes.xml中使用<ignored-parameter>标签来隐藏requets参数。 Liferay documentation说“忽略的参数不会影响URL识别”。当我重定向到Struts动作时,我的参数会丢失并被忽略。

来自我的friendly-url-routes.xml

的片段
<route>
    <pattern>/showSearch</pattern>
    <ignored-parameter name="searchId"/>
    <ignored-parameter name="pageNumber"/>
    <ignored-parameter name="count"/>
</route>

这是在struts.xml

<action name="showSearch" method="showSearch" class="com.mycomp.portlet.action.search.SearchAction">
        <result name="success">
            <param name="location">/WEB-INF/jsp/results/detail.jsp</param>
            <param name="searchId">${searchId}</param>
            <param name="pageNumber">${pageNumber}</param>
            <param name="count">${count}</param>
        </result>
</action>

如果标签不应该影响操作的功能,那么它怎么可能?有什么我可以做的来隐藏这些参数但保留功能吗?我无法使用<generated-parameter>代码,因为这些参数并不总是具有值

由于

1 个答案:

答案 0 :(得分:1)

我不知道Liferay,但似乎合乎逻辑的是,如果要求忽略参数,该参数将被忽略(读取:从URL中删除)。

The same documentation you linked,在上一句中指出:

  

ignored-parameter元素指定一个应忽略且未包含在生成的网址中的参数

之后,目前尚不清楚你想要实现的目标。

如果您想使用GET请求,QueryString中的参数需要保留在那里(但您可以使用{{在漂亮网址 / 清除网址中格式化它们) 3}})。否则你是Advanced Wildcard Mapping(与身体一起获得)。

根本没有必要将这些参数放在Struts配置中......

除非您的结果属于redirect / redirectAction类型,否则参数将在两个请求中丢失。在这种情况下,您可以(在redirectAction中)以代码中使用的方式静态复制参数,或者(在redirect中)仅动态复制该请求的现有参数,而无需知道它们并在配置中对它们进行硬编码violating HTTP 1.1