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

Estoy usando este código en mi página xhtml, cuando ejecuto la aplicación, la metadescripción sigue ejecutándose. Quiero usar la etiqueta meta description dependiendo de algunas condiciones. diseño maestro:ui: definir con el atributo rendered = "false" aún representación

<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> 

página 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> 

Respuesta

13

El <ui:define> es un taghandler que se ejecuta durante el tiempo de vista de construcción, no un UIComponent que se ejecuta durante la visualización en tiempo de render. Por lo tanto, admite not el atributo rendered. Cualquier atributo no compatible simplemente se ignora.

Use <ui:fragment> en su lugar.

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