JSF-rich:componentControl和a4j:jsFunction重定向问题



我有两个问题。首先,我不知道如何使用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()"/>

最新更新