【问题标题】:Liferay 7 JSF actions not triggeredLiferay 7 JSF 动作未触发
【发布时间】:2018-06-13 13:09:26
【问题描述】:

我有一个用 JSF 2 Richfaces 编写的 Liferay Portlet 应用程序,部署在 weblogic 下。

页面渲染得很好,看起来 EL 解析器做得很好。

但是,一旦我发起任何形式的提交,页面就会重新加载,但什么也没有发生。

我在网上找到了几个解决方案,大部分都归结为这个解决方案:

Why isn't Liferay Faces processing JSF portlet action events?

我还在 Liferay 的官方 JSF Richfaces 展示应用程序中找到了这些 liferay-porlet.xml 设置,所以我已经尝试过了。

问题是我一加:

<requires-namespaced-parameters>false</requires-namespaced-parameters>

对于我的liferay-porlet.xml,portlet 变得不可见,因此我无法验证它是否解决了问题。

有没有人遇到过类似的问题?有没有人有什么建议?我还查看了这篇文章中提出的建议:

action method is not called in JSF

它们似乎都不适用于我的情况。我已经将我的应用程序剥离到了骨子里。这似乎是 Liferay 的问题。

使用的版本:

Liferay 7.0
RichFaces 4.5.17
com.liferay.faces.bridge.impl 4.1.1
com.liferay.faces.bridge.ext 5.0.2
com.liferay.faces.bridge.api 4.1.0
javax.faces 2.2.14

【问题讨论】:

  • 我知道 PrimeFaces 也有类似的问题,他们在 javascript 中添加了一些显式代码以在提交操作时添加“portlet 命名空间”。可能与 RichFaces 从未实现过这个事实有关......(只是猜测)

标签: jsf liferay


【解决方案1】:

你有两个选择:

  • 将以下内容添加到您的 WEB-INF/web.xml 文件中,以确保 JSF 正确处理命名空间参数:

    <context-param>
        <param-name>com.sun.faces.namespaceParameters</param-name>
        <param-value>true</param-value>
    </context-param>
    

    某些组件库可能无法处理命名空间参数,但我很确定 PrimeFaces、IceFaces 和 RichFaces 可以(可能 BootsFaces 和 ButterFaces 也可以)。

  • 将以下内容添加到 WEB-INF/liferay-portlet.xml&lt;portlet&gt; 部分:

    <requires-namespaced-parameters>false</requires-namespaced-parameters>
    

您似乎尝试了 #2,但您可能将配置包含在错误的位置。这可能会导致错误,进而导致您的 portlet 无法部署。检查 DTD 以确保您的配置顺序正确:https://docs.liferay.com/ce/portal/7.0-latest/definitions/liferay-portlet-app_7_0_0.dtd.html

【讨论】:

猜你喜欢
  • 2014-09-18
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 2017-02-13
  • 2013-10-24
  • 2012-04-12
相关资源
最近更新 更多