2013-05-08 90 views
0

我们有一个应用程序,其中包含许多使用JSF1.2和RichFaces 3.3.3.Final和PortletBridge 2.1.1的Liferay 6.0.6 portlet,并且一切正常。我们决定使用RichFaces 4.2.3.Final和PortletBridge 3.1.2将我们的东西升级到JSF2。在我们尝试使用一些支持ajax的命令按钮(a4j:commandButton或h:commandButton with f:ajax)来导航时,一切似乎都没有问题:在这种情况下,portlet执行导航,但整个Liferay屏幕消失,只有JSF组件仍保留在屏幕上。如果我们再次尝试使用一些导航,它会很快失效(1-3后尝试)与此异常:Liferay portlet问题与Richfaces 4.2和PortletBridge 3.1

[#|2013-05-08T14:15:33.104+0200|SEVERE|glassfish3.0.1|com.sun.grizzly.config.GrizzlyServiceListener|_ThreadID=26;_ThreadName=Thread-1;|Unblocking keep-alive exception 
java.lang.IllegalArgumentException: Request header is too large 

它还记录一些有趣的事情是这样的:

[#|2013-05-08T14:11:42.203+0200|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=26;_ThreadName=Thread-1;|Unable to find component with clientId 'pb_richtest_WAR_richtest_INSTANCE_HlC1__j_id1:j_id2', no need to remove it.|#] 

更新: 经过一番挖掘,我们意识到使用ajax进行导航是非常糟糕的做法(即使它适用于JSF1.2和RichFaces 3.3),所以改变了我们的模板以避免这种情况发生。并且从JBoss PorletBridge转换到Liferay自己的Faces Bridge,它似乎工作正常。上面的所有例外都消失了,导航按照原样进行。

回答

0

如果您使用的是Liferay 6.0.6,那么您需要使用Liferay Faces 3.0.x,而不是3.1.x.有关更多信息,请参阅Liferay Faces Version Scheme wiki文章。

+0

我们使用JBoss PortletBridge 3.1.2,而不是Liferay Faces Bridge。但同时我们意识到我们问题的根源可能在于,JBoss PortletBridge与Liferay环境中的其他组件不能很好地协同工作。我们尝试了Liferay Faces Bridge,似乎更好。 – marczeeee 2013-05-10 08:26:09