JSF2 encode wird bei Validierungsfehlern doppelt ausgeführt

Vatar

Erfahrenes Mitglied
Hallo miteinander

Ich stehe gerade vor einem großen Problem und ich kann den Fehler einfach nicht finden. Ich benutze bewusst keine Composite-Components, da ich für eine komplexe Funktion mehr Möglichkeiten benötige die ich in Composits nicht habe. Daher habe ich einige klassische Komponenten erstellt die einfach die Standard-Tags kapseln sollen und so einfach erweitert werden können.

Soweit funktionieren die Komponenten auch, allerdings wird der Komponentenbaum 2x gerendert wenn ich einen Validierungsfehler proviziere. Der erste Komponentenbaum enthällt in diesem Fall nur die Klassen, es fehlen aber alle Attribute. Im zweiten durchlauf wird dann alles korrekt erstellt, nur kommt es zusätzlich zu einem Fehler weil dann innerhalb der verwendeten Form die IDs doppelt vergeben werden.


HTML:
<div ...namespaces hier>
  <ui:composition template="template.xhtml">
    <ui:define name="content">
        <test:content id="seite 1" modus="read">
           <test:form>
             <test:komponente pflicht="ture" id="vorname" label="Vorname" value="#{bean.blubb}"/>
             <test:komponente pflicht="ture" id="bla" label="Bla" value="#{bean.bla}"/>
           </test:form>
        </test>
    </ui:define>
  </ui:composition>
</div>


Die Komponente rendert ganz einfaches HTML raus...zusätzlich zum inputtext wird noch das label erzeugt. Dieses soll später automatisch aufgelöst werden (deshalb und wegen nötiger Kontrolle über das Rendering wird keine Composite-Component verwendet).

Im Debugger kann ich jetzt erkennen, dass im Falle der Komponenten "Content" im ersten druchlauf die Attribute ID und Modus nicht gesetzt sind. Im zweiten aber schon.

P.S. Ich sollte vielleicht erwähnen dass JSF hier in einer Portlet-Umgebung betrieben wird.

EDIT:
gerade die Frage gestellt und schon ein edit notwendig.
Es scheint so, als dass das Template für das Problem verantwortlich ist, denn wenn ich dieses auskommentiere tritt der Fehler nicht mehr auf. Das Template ist rudimentät und beinhaltet lediglich ein paar Bereiche.
 
Zuletzt bearbeitet: