1

好吧,首先我要解释一下我要做什么,我有一个 index.xhtml 页面,我在其中包含带有 primefaces 菜单栏的 menu.xhtml,在 menu.xhtml 中有一个面板 id=contenido 我想根据单击的菜单项进行更新,我已经更新了该面板,但问题是当我更新到另一个页面时,例如默认是 home.xhtml 并且我更新到 enviarsol.xhtml 然后来自 enviarsol.xhtml 的命令按钮不起作用,我是新手,我已经尝试了一些不同的更新面板的方法,我认为问题是enviarsol.xhtml的bean没有被管理或类似的东西,我这样做是因为我只想刷新那个面板而不是所有页面,请有人帮助我。

索引.xhtml:

<h:form>
    <img src="resources/homeheader.jpg" width="300" height="113" alt="homeheader"/>
    <div style="background-color: white">
    <img src="resources/Logos.jpg" width="1024" height="166" alt="homeheader"/>
    </div>
     <p:panel id="centerpage" >
        <ui:include src="WEB-INF/menu.xhtml"/>
    </p:panel>
</h:form>`

菜单.xhtml:

<p:menuitem value="Contactos" icon="ui-icon-arrowreturnthick-1-w" actionListener="#{bnmenu.btnEditarContacto(e)}" update="contenido"/>  
<p:panel id="contenido" >
    <ui:include  src="#{bnmenu.url}"/>
</p:panel>

bnmenu.java:

private String url;

public bnmenu() {
    url="home.xhtml";
}

 public void btnEditarContacto(ActionEvent e)
{
  url="enviarsol.xhtml";
}

主页.xhtml:

<p:panelGrid columns="2" style="border-width: 0px">
        <p:commandButton  value="Consultar" actionListener="#{bnhome.btnlogin(e)}" update="txt1"/>
    <p:inputText id="txt1" value="#{bnhome.txtUsuario}"/>
    </p:panelGrid>

enviarsol.xhtml:

<p:panelGrid columns="2" style="border-width: 0px">
        <p:outputLabel for="txtcorreo" value="Correo: "/>
        <p:inputText id="txtcorreo" value="#{bnSolicitud.correo}"/>
         <p:outputLabel for="txtmensaje" value="Mensaje: "/>
         <p:inputText id="txtmensaje" value="#{bnSolicitud.mensaje}"/>
         <p:commandButton  value="Enviar" actionListener="#{bnSolicitud.btnSolicitar(e)}" update="messages"/>        
</p:panelGrid>`

我包括了这个:

<context-param> 
    <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name> 
    <param-value>false</param-value> 
</context-param>

现在它正在工作,但我不知道这会产生什么更多的影响现在它可以正常工作,但只有一次当我从 enviarsol.xhtml 中单击命令按钮时,最后它看起来工作正常,我在 bnmenu 中通过 @SessionScoped 更改了 @RequestScoped

4

1 回答 1

0

你确定你真的想要ajax导航吗?对于无法使用浏览器 urlfield 或导航按钮的用户来说,这是非常令人沮丧的,而且您也将更难编写代码。考虑将 index.xhtml 转换为模板文件,如http://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-example所述并使用正常导航。

于 2012-06-25T18:07:47.943 回答