Liferay 7 JSF操作未触发

时间:2018-06-13 13:09:27

标签: jsf liferay

我有一个用weblogic部署的JSF 2 Richfaces编写的liferay portlet应用程序。

页面呈现得很好,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

1 个答案:

答案 0 :(得分:2)

您有两种选择:

  • 将以下内容添加到 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)。

  • 将以下内容添加到 <portlet> WEB-INF/liferay-portlet.xml部分:

    <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