Hallo,
ich stelle mein Model mit verschachtelten Composite Components dar. Das sieht so aus:
Hier werden die Steps mittels com:Step dargestellt.
<h:form>
<p:dataList id="steps" value="#{RecipeBean.recipe.steps}" var="step" itemType="disc">
<com:Step stepId="#{step.id}" description="#{step.stepDescription}" removeText="#{msg['step.delete']}" removeAction="#{RecipeBean.removeStep(step)}"
Quantities="#{step.quantity}" addText="#{msg['quantity.add']}" addAction="#{RecipeBean.addQuantity(step)}"
completeMethodMeasurement="#{RecipeBean.completeMethodMeasurement(query)}"/>
</p:dataList>
<p:commandButton id="addstep" value="#{msg['step.add']}" action="#{RecipeBean.addStep}" update="steps"/>
<p:commandButton id="save" value="#{msg['default.save']}" action="#{RecipeBean.save}" update="steps"/>
</h:form>
Die Steps zeigen widerum das com:Quantity Control an.
<h:inputHidden id="id" value="#{cc.attrs.stepId}" />
<p:inplace widgetVar="basic_#{cc.attrs.stepId}">
<p:inputText value="#{cc.attrs.description}" id="description">
<p:ajax event="blur" oncomplete="basic_#{cc.attrs.stepId}.hide();" />
</p:inputText>
</p:inplace>
<h:commandButton id="removeStep" action="#{cc.attrs.removeAction}" value="#{cc.attrs.removeText}" />
<!-- show Quantities -->
<p:dataList id="quantities" value="#{cc.attrs.Quantities}" var="quantity" itemType="disc">
<com:Quantity Amount="#{quantity.amount}" Measurement="#{quantity.getMeasurement()}" Ingredient="#{quantity.getIngredient()}"
completeMethodMeasurement="#{cc.attrs.completeMethodMeasurement}" />
</p:dataList>
<p:commandButton id="addQuantity" action="#{cc.attrs.addAction}" value="#{cc.attrs.addText}" update="quantities" />
Und hier der Inhalt vom com:Quantity Control. Ich habe bzw. will die input Elemente durch das p:AutoComplete Control ersetzen.
<h:inputHidden id="id" value="#{cc.attrs.QuantitieId}" />
<h:inputText id="amount" value="#{cc.attrs.Amount}" />
<h:inputText id="measurement" value="#{cc.attrs.Measurement.name}" />
<!--<p:autoComplete id="measurement" completeMethod="#{cc.attrs.completeMethodMeasurement}" maxResults="20" value="#{cc.attrs.Measurement}" var="p" itemLabel="#{p.name}"
itemValue="#{p}" converter="#{measurementStringConverter}" forceSelection="true" /> -->
<h:inputText id="ingredient" value="#{cc.attrs.Ingredient.name}" />
Wenn ich im com:Quantity nun das Input Feld mit id=“measurement” auskommentiere und stattdessen das vorgesehene p:AutoComplete verwende, funktionieren sämtliche Buttons auf der Seite nicht mehr.
Weder der Button Save noch der Button addStep. Lösche ich das autoComplete hingegen funktionieren die Buttons wieder.
Mir ist das ein Rätsel und ich weiß nicht wie ich vorgehen soll damit ich das Problem finden kann. Setze ich einen Breakpoint in die aufgerufenen Funktion vom Button springt der Debugger nur hinein, wenn ich das AutoComplete Control nicht verwende.
Hat jemand Rat?