2011-10-14 17 views
5

¿Es posible reutilizar una página varias veces unida a diferentes objetos?Reutilizando la misma página varias veces

Tengo una página en la que puede ingresar información personal (nombre, dirección, número social, ...) conectarse a un bean: perspectiva. En algunas ocasiones debo recopilar información personal vinculada. ejemplo de calificación crediticia (una persona y un garante).

Así que quería usar con 2 incluye. Pero, ¿cómo puedo asegurarme de que include1 contiene la información para person1 e include2 contiene la información para person2?

<rich:tabPanel id="creditScoreTab" switchType="client" > 
    <rich:tab id="mainContractor" > 
    <ui:include src="includes/prospect.xhtml" /> 
    </rich:tab> 
    <rich:tab id="guarantor"> 
    <ui:include src="includes/prospect.xhtml" /> 
    </rich:tab> 
</rich:tabPanel> 

y FacesContext

<managed-bean> 
    <managed-bean-name>prospect</managed-bean-name> 
    <managed-bean-class>be.foo.Prospect</managed-bean-class> 
    <managed-bean-scope>view</managed-bean-scope> 
</managed-bean> 

encontré 2 arounds de trabajo posible: -duplicate la página 2 y definen los granos en la cara-config (apuntando a la misma clase de Java) -no se utilice TabPanel e incluya, pero ingrese la información person1, luego guárdela y cargue información person2 y guarde person2.

Solución1 El punto negativo es que mantiene el mismo código dos veces. punto negativo Workaround2 es que no es tan 'cool' (punto de ux de vista)

Respuesta

7

Puede utilizar <ui:param> pasar parámetros a <ui:include>:

<rich:tabPanel id="creditScoreTab" switchType="client" > 
    <rich:tab id="mainContractor" > 
    <f:subview id="mainContractorView"> 
     <ui:include src="includes/prospect.xhtml"> 
     <ui:param name="person" value="#{bean.person1}" /> 
     </ui:include> 
    </f:subview> 
    </rich:tab> 
    <rich:tab id="guarantor"> 
    <f:subview id="guarantorView"> 
     <ui:include src="includes/prospect.xhtml"> 
     <ui:param name="person" value="#{bean.person2}" /> 
     </ui:include> 
    </f:subview> 
    </rich:tab> 
</rich:tabPanel> 

Con el ejemplo anterior, en cada uno incluye la persona deseada estará disponible como #{person}. Esas etiquetas <f:subview> son para evitar errores duplicados de ID de componente porque terminan dentro del mismo padre UINamingContainer.

+0

Cuando hago esto, aparece el siguiente error: javax.servlet.ServletException: Component ID prospectdetail: creditScoreView: privatePerson ya se ha encontrado en la vista. ¿Como puedo resolver esto? privatePerson es una identificación de componente utilizada en prospect.xhtml – roel

+0

Aparentemente las pestañas RichFaces no son componentes 'UINamingContainer'. Intenta poner '' con una ID única alrededor del ''. – BalusC

+0

Tnx, perfección :) – roel

Cuestiones relacionadas