Nested Composite Components

S

Sym

Gast
Hallo,

ich habe folgendes Problem. Ich habe zwei Composite Components, die ich ineinander verschachteln möchte. Für sich alleine funktionieren beide Komponenten, aber geschachtelt wird die jeweilige Action zwar aufgerufen, aber ein Neuzeichnen wird nicht durchgeführt.

Hat jemand eine Idee?

Diese Komponente zeichnet ein Label und ein Inputtextfield.

[XML]<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:ts="http://larmic.de/ts"
xmlns:tsc="http://java.sun.com/jsf/composite/components"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:f="http://java.sun.com/jsf/core">

<h:body>
<composite:interface>
<composite:attribute name="labelText" required="true" />
<composite:attribute name="divstyle" required="false" />
<composite:attribute name="required" required="false" />
<composite:attribute name="value" required="true" />
<composite:editableValueHolder name="inputText"
targets="#{cc.clientId}_inputText" />
<composite:attribute name="id"></composite:attribute>
<composite:attribute name="rendered"></composite:attribute>
</composite:interface>

<composite:implementation>
<div class="#{empty cc.attrs.divstyle ? 'edit' : cc.attrs.divstyle}">
<h:eek:utputLabel value="#{cc.attrs.labelText}"
for="#{cc.clientId}_inputText" />

<h:inputText id="#{cc.clientId}_inputText"
value="#{cc.attrs.value}" required="#{cc.attrs.required}">
<composite:insertChildren />
</h:inputText>

<ts:errorTooltip
target="#{cc.clientId}_inputText">
<h:message for="#{cc.clientId}_inputText" />
</ts:errorTooltip>
</div>

<div class="clearFloats" />
</composite:implementation>
</h:body>
</html>[/XML]

Diese Komponente erwartet eine spezielle Klasse und führt bei Buttonklicks Neuzeichnungen aus.

[XML]<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:ts="http://larmic.de/ts"
xmlns:tsc="http://java.sun.com/jsf/composite/components"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:f="http://java.sun.com/jsf/core">

<h:body>
<composite:interface>
<composite:attribute name="editPanelBean" type="de.larmic.ts.web.application.EditPanelBean" required="true"/>
</composite:interface>

<composite:implementation>
<a4j:eek:utputPanel id="ruleSetPanel">
<a4j:region id="ruleSetRegion">

<a4j:commandButton id="cancelBtn" execute="@this" value="Abbrechen" action="#{cc.attrs.editPanelBean.cancelEdit()}"
styleClass="cancel cancelBtn button" render="form" ajaxSingle="true"
rendered="#{cc.attrs.editPanelBean.editMode and cc.attrs.editPanelBean.editAllowed}">
<ts:defaultCancelAction />
</a4j:commandButton>

<a4j:commandButton execute="@this"
value="Neu"
action="#{cc.attrs.editPanelBean.createNew()}"
styleClass="accept acceptBtn button"
render="ruleSetPanel"
ajaxSingle="true"
rendered="#{cc.attrs.editPanelBean.newAllowed and not cc.attrs.editPanelBean.editMode}"/>

<a4j:commandButton id="saveBtn" execute="@region" value="Speichern" action="#{cc.attrs.editPanelBean.save()}"
styleClass="accept acceptBtn button" render="form"
rendered="#{cc.attrs.editPanelBean.editMode and cc.attrs.editPanelBean.editAllowed}">
<ts:defaultAction />
</a4j:commandButton>

<a4j:commandButton id="editBtn" execute="@region" value="Bearbeiten" action="#{cc.attrs.editPanelBean.beginEdit()}"
styleClass="accept acceptBtn button" render="ruleSetPanel"
rendered="#{not cc.attrs.editPanelBean.editMode and cc.attrs.editPanelBean.editAllowed}" />

<div class="clearFloats" />

<composite:insertChildren />

</a4j:region>
</a4j:eek:utputPanel>
</composite:implementation>
</h:body>
</html>[/XML]

Da beide Komponenten für sich alleine funktionieren (auch mit Children), weiß ich gerade nicht weiter. Hat jemand einen Tip oder Link?

Gruß und Dank Sym
 
S

Sym

Gast
Wenn ich

[xml]<h:inputText id="#{cc.clientId}_inputText"
value="#{cc.attrs.value}" required="#{cc.attrs.required}">
<composite:insertChildren />
</h:inputText>[/xml]

auskommentiere, klappt es. Wenn ich nur insertChildren auskommentiere, dann nicht.
 

Ähnliche Java Themen

Neue Themen


Oben