【发布时间】:2015-01-06 21:44:56
【问题描述】:
我在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> 标签,因为这些参数并不总是有值
谢谢
【问题讨论】:
-
Struts2 使用自己的方案进行 URL 识别。最重要的参数是动作名称和命名空间。动作名称后面的其他参数并不重要,因此可以忽略。
-
问题是如果我忽略它们,那么复选框不会保持选中状态,文本输入不会保留它们的文本等...我正在通过一些操作进行重定向,所以它可能会干扰其中一个在某处生成的网址
-
那么你应该将它们添加到一个模式中。
-
你的意思是在“?”之前在网址中?这是一个使用大约 40 个参数提交的搜索,所以我试图根本不显示它们。 IE 最多只能支持超过 2000 个字符的 url。此外,只有当参数具有某些值时,它才会起作用。就我而言,它们有时是空的。 (当用户没有在搜索栏中输入任何内容时)
-
你为什么要通过 url 传递它们?
标签: xml struts2 liferay portlet friendly-url