我如何通过一个菜单对所有菜单的单个方法动态加载模板。我如何识别调用该方法的菜单项。这是我的 xhtml:
<h:body>
<p:layout fullPage="true">
<p:layoutUnit position="north" size="80" resizable="true" closable="true" collapsible="true">
<h:form id="form3">
<ui:include src="./templates/template.xhtml" />
</h:form>
</p:layoutUnit>
<p:layoutUnit position="south" size="100" closable="true" collapsible="true">
Footer
</p:layoutUnit>
<p:layoutUnit position="west" header="Opciones" size="175">
<h:form id="form1">
<p:panelMenu style="width:200px">
<p:submenu label="Clientes" >
<p:menuitem value="Adicionar" update=":form2" actionListener="#{templateMB.templateAddCliente}" />
<p:menuitem value="Modificar" update=":form2" actionListener="#{templateMB.templateConfigCliente}" />
<p:menuitem value="Listado" update=":form2" actionListener="#{templateMB.templateListadoCliente}" />
</p:submenu>
<p:submenu label="Contratos">
<p:menuitem value="Adicionar" update=":form2" actionListener="#{templateMB.templateAddContrato}" />
</p:submenu>
<p:separator/>
<p:submenu label="Suplementos" >
<p:menuitem value="Adicionar" icon="ui-icon-signal"/>
</p:submenu>
</p:panelMenu>
</h:form>
</p:layoutUnit>
<p:layoutUnit position="center" id="centerlayout">
<h:form id="form2">
<ui:include src="#{templateMB.centerTemplate}" />
</h:form>
<p:dialog id="dialog" header="Subir Documento del Contrato" resizable="false" widgetVar="fileDialog" showEffect="explode" hideEffect="explode" width="500" height="200">
<h:form enctype="multipart/form-data">
<p:panel id="panelDialog">
<p:fileUpload value="#{contratosMB.fileContrato}" mode="simple" style="width: 400px"/>
<br/>
<br/>
<p:commandButton value="Guardar" ajax="false"
actionListener="#{contratosMB.upload}"/>
</p:panel>
</h:form>
</p:dialog>
</p:layoutUnit>
</p:layout>
</h:body>
这是我的支持 bean:
public String templateAddCliente() {
try {
this.centerTemplate = "./templates/addCliente.xhtml";
return null;
} catch (Exception e) {
JsfUtil.addErrorMessage("Ha ocurrido un error: " + e.getMessage());
return null;
}
}
public String templateConfigCliente() {
try {
this.centerTemplate = "./templates/configCliente.xhtml";
return null;
} catch (Exception e) {
JsfUtil.addErrorMessage("Ha ocurrido un error: " + e.getMessage());
return null;
}
}
public String templateHome() {
try {
this.centerTemplate = "./templates/hometemplate.xhtml";
return null;
} catch (Exception e) {
JsfUtil.addErrorMessage("Ha ocurrido un error: " + e.getMessage());
return null;
}
}
public String templateListadoCliente() {
try {
this.centerTemplate = "./templates/listadoCliente.xhtml";
return null;
} catch (Exception e) {
JsfUtil.addErrorMessage("Ha ocurrido un error: " + e.getMessage());
return null;
}
}
public String templateAddContrato() {
try {
this.centerTemplate = "./templates/addContratos.xhtml";
return null;
} catch (Exception e) {
JsfUtil.addErrorMessage("Ha ocurrido un error: " + e.getMessage());
return null;
}
}
到目前为止一切正常,但我必须为每个菜单项创建一个方法,我不喜欢。我想在 backinbean 中使用单个方法来加载页面,但找不到方法。