Ho il seguente componente composito:condizionale rendono attributo di elemento in un componente composito
<?xml version="1.0" encoding="UTF-8"?>
<ui:component xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute required="true" name="field" />
<composite:attribute required="true" name="value" />
<composite:attribute required="false" name="size"/>
</composite:interface>
<composite:implementation>
...
<div class="wrapper">
<h:inputText value="#{cc.attrs.value}"
id="#{field.id}"
rendered="#{field.rendered}"
size="#{cc.attrs.size}">
</h:inputText>
<h:messages for="#{field.id}" styleClass="errorMessage"/>
</div>
...
</composite:implementation>
</ui:component>
Il problema è che quando sto utilizzando questo componente senza impostare l'attributo size
, viene comunque riprodotto come size=0
nel elemento di input html.
Quello che voglio è rendere l'attributo nidificato h:inputText
solo se ha un valore valido (ad esempio non vuoto). In alternativa, vorrei esporre tutti gli attributi dell'elemento nidificato se non sono sovrascritti esplicitamente.
Come sarebbe possibile?
Prestare attenzione ai tag, un componente composito non è un componente personalizzato. Vedi anche http://stackoverflow.com/questions/5704620/what-is-the-difference-between-custom-components-and-composite-components – BalusC
Grazie per la correzione. Ne sono consapevole, ma sono stato un po 'incurante, forse ho bisogno di un paio di minuti di pausa: S –