我有两个问题。首先,我不知道如何使用rich:componentControl,我使用了一个旧代码和这个网站:https://community.jboss.org/wiki/RichFaces33-4xMigrationGuideUnleashed但无论我尝试什么,我仍然有这个错误:
javax.servlet.ServletException:/admin.xhtml@191.30父级不是ClientBehaviorHolder的实例:javax.faces.component.html.HtmlOutputText@1ee71d84javax.faces.webapp.FacesServlet.service(FacesServlet.java:521)com.lesim.fst.service.FilterUTF8.doFilter(FilterUTF8.java:20)
这是我的代码:
<rich:column>
<h:outputText value="#{msg.la8}" id="actionId" >
<rich:componentControl event="onmouseover" target="menu" operation="show" />
</h:outputText>
<rich:contextMenu id="menu" mode="client">
<rich:menuItem label="#{msg.ll8}" onclick="functionEdit();" icon="/images/edit16.png" />
<rich:menuItem label="#{msg.ll9}" onclick="functionSuppr();" icon="/images/supprimer16.png" />
</rich:contextMenu>
<a4j:jsFunction name="functionEdit" action="#{administrateurBean.editAdministrateur()}" >
<a4j:param value="#{administrateur.idadministrateur}" name="idadministrateur" />
</a4j:jsFunction>
<a4j:jsFunction name="functionSuppr" action="#{administrateurBean.deleteAdministrateur()}">
<a4j:param value="#{administrateur.idadministrateur}" name="idadministrateur" />
</a4j:jsFunction>
</rich:column>
我的目标是在h:outputText为onmouseover时显示rich:contextMenu,并且需要rich:componentControl,因为onmouseover属性不适用于rich:contentMenu(根据本网站:https://issues.jboss.org/browse/RF-7497)
您还可以看到,我没有直接使用Bean方法,而是将它们放在a4j:jsFunction中。这是因为action属性不适用于rich:menuItem(根据本网站:[哦,不……我不能给出这个……我以为你要求最大限度地提供我自己的搜索,但显然你不太想要它…])所以我使用了他的解决方案,但从faces配置重定向不起作用
面配置:
<navigation-rule>
<display-name>admin.xhtml</display-name>
<from-view-id>/admin.xhtml</from-view-id>
<navigation-case>
<from-action>#{administrateurBean.editAdministrateur}</from-action>
<from-outcome>edit</from-outcome>
<to-view-id>/editAdministrateur.xhtml</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-action>#{administrateurBean.deleteAdministrateur}</from-action>
<from-outcome>list</from-outcome>
<to-view-id>/admin.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
如果有人看到了解决我的一个问题的方法,或者两者都有,欢迎
谢谢,昆汀
由于错误消息显示h:outputText不是行为保持器组件(特别是该组件不会触发"mouseover"事件)。
请参阅文档:http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/
例如,您可以使用h:outputLabel
(注意事件名称为mouseover
)
<h:outputLabel value="#{msg.la8}" id="actionId">
<rich:componentControl event="mouseover" target="menu" operation="show"/>
</h:outputLabel>
或者通过这种方式使用onmouseover
属性:
<h:outputLabel value="#{msg.la8}" id="actionId"
onmouseover="${rich:component('menu')}.show()"/>