2012-09-29 2 views
6
<ui:define name="description" rendered="false"> 
    <meta name="description" content="do not render" /> 
</ui:define> 

sto usando questo codice nella mia pagina xhtml, quando eseguo l'app, meta description è ancora in rendering. Voglio usare il tag meta description in base ad alcune condizioni. Layout maestro:ui: define con rendering = attributo "false" ancora in riproduzione

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:h="http://java.sun.com/jsf/html"> 
    <h:head> 
     <ui:insert name="description" /> 
    </h:head> 
    ........... 
</html> 

pagina web:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"      
       xmlns:ui="http://java.sun.com/jsf/facelets" 
       xmlns:h="http://java.sun.com/jsf/html" 
       xmlns:f="http://java.sun.com/jsf/core" 
       xmlns:p="http://primefaces.org/ui" 
       template="/templates/masterLayout.xhtml"> 

    <ui:define name="description" rendered="false"> 
     <meta name="description" content="do not render" /> 
    </ui:define> 
........... 
</ui:composition> 

risposta

13

Il <ui:define> è un taghandler che viene eseguito durante il tempo di vista di costruzione, non un UIComponent che viene eseguito durante la visualizzazione rendering. Pertanto, not supporta l'attributo rendered. Qualsiasi attributo non supportato è semplicemente ignorato.

Utilizzare invece <ui:fragment>.

<ui:define name="description"> 
    <ui:fragment rendered="false"> 
     <meta name="description" content="do not render" /> 
    </ui:fragment> 
</ui:define>