首先生病解释我尝试做什么,我有一个index.xhtml页面,其中我包含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
答案 0 :(得分:0)
你确定你真的想要ajax导航吗?对于不能使用浏览器urlfield或导航按钮的用户来说非常令人沮丧,并且你也很难编码。考虑将index.xhtml转换为模板文件,如http://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-example所述,并使用常规导航。