加载网页时,我看不到@PostConstruct方法bean中生成的菜单

问题描述 投票:0回答:1

环境:

  • Jboss 5.2
  • Java 7
  • JSF 2.1.2
  • Primefaces 6.2

我想在ViewScope bean中加载在@PostConstruct方法中生成的菜单,但是在加载网页时,该菜单无效。

页面persona.xhtml是从另一个网站的重定向加载的,作用域似乎是RequestScope而不是ViewScope,因为执行了@PostConstruct(init()),但是直到我重新执行@PostConstruct(init( ))方法

已加载特定的bean CustomMenuBean(视图范围),但Web页面中的CustomMenuBean.menu为空,但它在bean中具有菜单(当我在调试模式下停下来时,正确加载了CustomMenuBean.menu)。

因此,我尝试使用按钮来更新frmMenus以进行测试,并且在使用以下代码刷新网页后,它可以正常工作。

<p:commandButton value="update" action="#{personaBean.doNothing}"  process=":frmMenus" update=":frmMenus"/>

网页persona.xhtml

...
<h:form id="frmMenus">
    <div class="layout-menu-container #{usuariPreferenciesBean.menuClass}">
        <div class="nano">
            <div class="nano-content menu-scroll-content">
                <ui:include src="menu_profile.xhtml"/>

                <pu:menu id="mnu_custom" widgetVar="mnu_custom" model="#{customMenuBean.menu}"/>
                <p:separator/>
            </div>
        </div>
    </div>
</h:form>

 <h:form id="frmPersona">
    <!-- person data -->
 </h:form>
 ...

PersonaBean.java

@ViewScoped
@ManagedBean
public class PersonaBean...
...
@ManagedProperty(value = "#{customMenuBean}")
private CustomMenuBean cstmMenuBean; //View scope Bean to store menu

@PostConstruct
public void init() {

    super.init(Persona.class);
    super.setService(service);

    cstmMenuBean.generateMenu(); //create a DefaultMenuModel()

}
...

我不知道我在想什么。

ajax redirect jsf primefaces
1个回答
0
投票

此错误似乎是一种错误,我没有找到解释。

我只是通过@PostConstruct托管bean中的javascript执行隐藏的按钮。

不是这样,但是它解决了此补丁程序的问题。

PersonaBean.java

PrimeFaces.current().executeScript("document.getElementById(\"frmPersona:btnUpdate\").click()");

persona.xhtml

<p:commandButton id="btnUpdate" value="update" action="#{personaBean.doNothing}" process=":frmMenus" update=":frmMenus" style="display:none"/>
© www.soinside.com 2019 - 2024. All rights reserved.