【问题标题】:portal:actionURL Spring MVC Portlet门户:actionURL Spring MVC Portlet
【发布时间】:2011-04-27 11:54:48
【问题描述】:

我正在尝试使用以下代码创建一个 actionUrl

<portlet:actionURL var="actionUrl"><portlet:param name='action' value='viewModules' /></portlet:actionURL>

并将其映射到弹簧控制器上

但是控制器没有响应,因为生成的 url 的 & 符号被编码了

例如

<snip>&amp;p_p_lifecycle=1&amp;p_p_state=normal&amp;p_p_mode=view&amp;p_p_col_id=column-1&amp;p_p_col_count=2</snip>

如果我取消编码并粘贴到浏览器中,这可行

我添加了 portlet.url.escape.xml=false 到 portal-ext.properties 但没有可用

请给我指出正确的方向

非常感谢

【问题讨论】:

  • 编码的 & 符号应该不是问题,因为它确实是表示 url 的正确方法。你可能在表单操作中使用 actionUrl 吗?
  • 是的 - 感谢您的回复。我以表格形式使用它
  • 我遇到了同样的问题...您找到解决方案了吗?

标签: java model-view-controller spring spring-mvc portlet


【解决方案1】:

我刚刚从一位同事那里得到了关于这个问题的独家新闻......

显然,Portlet 2.0 改变了 URL 的现状,并声明它们必须在默认情况下进行转义。 (以前没有规则,而且似乎有几个门户网站未转义。)转义 URL 在大多数情况下都可以正常工作……但并非在所有情况下都适用(例如,在 JavaScript 中使用时)。

对于这些情况,2.0 版本的标签提供了escapeXml="false" 属性。这是一个例子:

<portlet:renderURL var="enterAlertUrl" escapeXml="false">
    <portlet:param name="action" value="enterAlert"/>
    <portlet:param name="studentId" value="STUDENTID"/>
    <portlet:param name="courseId" value="COURSEID"/>
</portlet:renderURL>

这个 renderURL 会给你一个 URL 字符串没有参数之间的 URL 编码 & 符号。

【讨论】:

  • 非常感谢您一路跟进现在要记住它在哪里解决了我的问题;-)
【解决方案2】:

在我使用的表单操作中:

<portlet:actionURL var="send" escapeXml="false"/>

【讨论】:

  • 感谢您的回复,我会试一试
  • 感谢您的回答,但是根据 org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40) 的 TLD,这给出了此错误属性 escapeXml 对 tag actionURL 无效
  • 对于后代来说,“escapeXml invalid for tag”错误很可能是因为您没有针对 pluto-taglib 的 Portlet 2.0 版本进行构建。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多