我在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>
代码,因为这些参数并不总是具有值
由于
答案 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。