1

まず最初に、何をしようとしているのかを説明します。index.xhtmlページにprimefacesのメニューバーを含むmenu.xhtmlを含め、menu.xhtmlにパネルid = contenidoがあり、クリックしたメニュー項目に応じて更新します。 、私はすでにそのパネルを更新していますが、問題は、たとえばデフォルトでhome.xhtmlで別のページに更新し、enviarsol.xhtmlに更新すると、enviarsol.xhtmlのコマンドボタンが機能しないことです。すでにパネルを更新するいくつかの異なる方法を試しましたが、問題はenviarsol.xhtmlのBeanが管理されていないことなどであると考えています。また、すべてのページではなくそのパネルのみを更新したいので、この方法を実行しています。誰かが私を助けてください。

index.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>`

menu.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";
}

home.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またはナビゲーションボタンを使用できないことは非常に苛立たしいことであり、コーディングも難しくなります。http://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-exampleで説明されているように、index.xhtmlをテンプレートファイルに変換し、通常のナビゲーションを使用することを検討してください。

于 2012-06-25T18:07:47.943 に答える