我有一个用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
答案 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