Ich habe folgende Verbundkomponente:Bedingtes Elements des Attributs in einem Verbundbauteil machen
<?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>
Das Problem ist, dass, wenn ich diese Komponente bin mit, ohne seine size
Attribut einstellen, ist es immer noch als size=0
in der gerendert wird HTML-Eingabeelement
Was ich will, ist das verschachtelte h:inputText
Attribut nur dann rendern, wenn es einen gültigen Wert (zB nicht leer) hat. Alternativ möchte ich alle Attribute des verschachtelten Elements offen legen, wenn sie nicht explizit überschrieben werden.
Wie wäre es möglich?
Bitte seien Sie vorsichtig mit der Kennzeichnung, eine zusammengesetzte Komponente ist keine benutzerdefinierte Komponente. Siehe auch http://stackoverflow.com/questions/5704620/what-is-the-difference-between-custom-components-and-composite-components – BalusC
Danke für die Korrektur. Ich bin mir dessen bewusst, aber ich war ein bisschen sorglos, vielleicht brauche ich ein paar Minuten Pause: S –