Tengo un bro problema que no sé cómo resolver. Tengo este Primefaces p:tabMenu que se utiliza para llamar a las pestañas con carga diferida.

<p:tabMenu id="tabs" activeIndex="0" > 
    <p:menuitem value="tab1" url="/tab1.jsf" /> 
    <p:menuitem value="tab2" url="/tab2.jsf" /> 

</p:tabMenu>

Quiero usar el JSF etiqueta ui:insert con el fin de llamar la pestaña del código. Cómo puedo combinar el ui:insert etiqueta en el código anterior?

  • ¿Qué quieres decir con cal la pestaña del código?
  • Usted debe mirar en cómo utilizar un plantillas con Facelets. Usted puede tener todos los de su ficha.jsf archivos de ampliar la plantilla principal que contiene el tabMenu.
  • Podría usted por favor, muéstrame cómo puedo usar ui:insert en p:tabMenu?
  • por qué no utilizar src= valor de <ui:include en url= atributo de <p:menuitem ?
  • ¿Vas a escribir un breve ejemplo de su idea?
  • Hola @user1285928, en este caso, no tiene sentido utilizar ui:insert. sólo puede tener 2 páginas: tab1.jsf y tab2.jsf. cada una de estas páginas, en la parte superior, tiene el fragmento de código que has publicado, con el tabMenu. en cambio, si uso tabView entonces usted puede utilizar la interfaz de usuario:introduzca. de esa manera ambas fichas se hará en la misma página. ¿por qué enfoque que usted prefiere? si quieres puedo elaborar en el tabView enfoque con ui:insert
  • Muéstrame todas las soluciones

InformationsquelleAutor user1285928 | 2012-10-06

2 Comentarios

  1. 8

    Veo 2 enfoques:

    1) Utilizar una página para cada ficha. el uso de la p:tabMenu componente (disponible en primefaces 3.4). En este caso, si el usuario está viendo una ficha y hace clic en la segunda pestaña para acceder a ella, será redirigido a otra página.

    pros: si usted desea desplazarse desde otra página a la segunda pestaña, es fácil, ya que es una página diferente (ver desventajas en el 2º enfoque). además, cada ficha página de carga rápida, ya que sólo contiene el código de una pestaña. usted tendrá una mejor separación de código.

    contras: si los usuarios se va a otra ficha, todos los datos introducidos en la ficha actual se perderán. además, cambiar de una pestaña a otra no es tan rápido porque no hay navegación involucrados.

    esta es la página de una ficha (tab1.xhtml):

    <h:body>
        <p:tabMenu activeIndex="0">  
            <p:menuitem value="Tab 1" url="/tab1.jsf" />  
            <p:menuitem value="Tab 2" url="/tab2.jsf" />  
        </p:tabMenu>
        <!-- content of tab1 goes here -->
    </h:body>  

    este es el código de la ficha otros (tab2.xhtml):

    <h:body>
        <p:tabMenu activeIndex="1">  
            <p:menuitem value="Tab 1" url="/tab1.jsf" />  
            <p:menuitem value="Tab 2" url="/tab2.jsf" />  
        </p:tabMenu>
        <!-- content of tab2 goes here -->
    </h:body>

    2) El otro enfoque es tener una página con p:tabView. en este caso, la ficha contenido en la misma página. usted puede utilizar dinámico=»true» atributo p:tabView para representar la ficha contenido de la demanda y acelerar la carga de la página.

    pros: transición más suave desde la ficha (siempre permanece en la misma página).

    contras: si desea ir directamente a la 2ª pestaña por ejemplo, no es tan fácil. así que tendrá que usar activeIndex atributo de tabView que apunta a un atributo del bean gestionado que se encarga de la primera ficha, y todavía tendrás la construcción de la haba de la primera ficha cuando en realidad no lo necesita.

    este es el código de la página principal que contiene la ficha:

    <h:body>
        <p:tabView dynamic="true">
            <p:tab id="tab1" title="Tab 1" >
                <ui:include src="tab2.xhtml" />
            </p:tabView>
            <p:tab id="tab2" title="Tab 2" >
                <ui:include src="tab2.xhtml" />
            </p:tab>
        </p:tabView>
    </h:body>

    y tendrás las páginas de cada ficha (que se inserta en la página principal):
    tab1.xhtml:

    tab2.xhtml:

  2. 2

    Supongo que usted quiere compartir código entre las pestañas?

    Creo que usted está mirando a sí mismo ciego en la tabMenu componente. No se necesita asistencia para utilizar correctamente las plantillas aquí.

    Sólo:

    1. Definir una plantilla de
    2. Tenemos las páginas que utilizan la plantilla

    Esas páginas a continuación, podría ser fichas o lo que quieras.

    una estructura adecuada podría ser, tal vez, para definir las pestañas.xhtml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:p="http://primefaces.org/ui"
        xmlns:pe="http://primefaces.org/ui/extensions"
        xmlns:o="http://omnifaces.org/ui">
    
    
    <h:head>
        <h:outputStylesheet name="style.css" library="css" />
        <div id="header">
    
            <ui:insert name="header">
                <title><ui:insert name="title">title</ui:insert></title>
    
            </ui:insert>
        </div>
    
    </h:head>
    
    <h:body>
        <div id="content">
    
            <ui:insert name="content">
            content here
            </ui:insert>
        </div>
    
    </h:body>
    
    </html>

    A continuación, para cada ficha tiene:

    <?xml version="1.0" encoding="UTF-8"?>
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui"
        xmlns:of="http://omnifaces.org/functions"
        xmlns:pe="http://primefaces.org/ui/extensions"
        template="/WEB-INF/templates/template.xhtml">
    
        <ui:define name="header">
        a specific tab header here
        </ui:define>
        <ui:define name="content">
        specific content here
        </ui:define>
        </ui:composition>

    Tenga en cuenta que esto es sólo el estándar de plantillas con JSF 2. Buena suerte

    • Sí. JSF plantilla es algo muy sencillo. Pero de nuevo ¿cómo puedo mezclar p:tabMenu con la plantilla?
    • Mira mi ejemplo anterior. Cada ficha p:tabMenu es una página escrita con interfaz de usuario:la composición. <p:menuitem value=»tab1″ url=»/tab1.jsf» /> Que podría ser una plantilla de página. Si no están satisfechos con esta respuesta que la mayoría dan un buen ejemplo de lo que quieres hacer. Escribir en pseudo-código, o algo

Dejar respuesta

Please enter your comment!
Please enter your name here