hi,
ich habe eine Frage/Question component erstellt und diese wiederum enthält eine Antwort/Answer component.
Ich habe zwei unterschiedliche Fragetypen - Single Choice, Multi Choice. Je nach Antwort type möchte ich das passende Element anzeigen. Für den Multi Choice funktioniert das, da es auch ein entsprechendes control gibt. Beim Single Choice geht das nicht. Der Wert selectedByUser wird nicht übernommen. Hat jemand eine Idee wie ich das lösen könnte?
Die Fragen Komponente sieht in etwa so aus:
cc:interface
<cc:attribute name=“ItemSource” type=“code.elephant.domainmodel.Question” required=“true” />
</cc:interface>
<cc:interface>
<cc:attribute name="ItemSource" type="code.elephant.domainmodel.Question" required="true" />
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<c:forEach items="${cc.attrs.ItemSource.answers}" var="item">
<li>
<local:Answer ItemSource="#{item}" AnswerType="#{cc.attrs.ItemSource.answerType}"
GapString="#{cc.attrs.ItemSource.gapString}"
QuestionId="#{cc.attrs.ItemSource.questionId}"/>
</li>
</c:forEach>
Answer component:
<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="AnswerType" type="code.elephant.domainmodel.AnswerType" required="true" />
<cc:attribute name="ItemSource" type="code.elephant.domainmodel.Answer" required="true" />
<cc:attribute name="QuestionId" type="java.lang.Long" required="true" />
<cc:attribute name="GapString" type="java.lang.String" />
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<c:if test="#{cc.attrs.AnswerType == 'MultipleChoice'}">
<h:selectBooleanCheckbox value="#{cc.attrs.ItemSource.selectedByUser}" />
<h:outputText value="#{cc.attrs.ItemSource.text}" />
</c:if>
<c:if test="#{cc.attrs.AnswerType == 'SingleChoice'}">
<input type="radio" name="answer#{cc.attrs.QuestionId}" value="#{cc.attrs.ItemSource.selectedByUser}" />#{cc.attrs.ItemSource.text}
</c:if>
</cc:implementation>
Konkret geht es um:
<input type="radio" name="answer#{cc.attrs.QuestionId}" value="#{cc.attrs.ItemSource.selectedByUser}" />#{cc.attrs.ItemSource.text}
Hier wird der Wert von value="#{cc.attrs.ItemSource.selectedByUser}"
nie übernommen, wenn der Benutzer den radio button selektiert hat.
Was für Lösungsmöglichkeiten gibt es für das Problem? Könnte ich Notfalls irgendwie auf die geposteten Formdaten zugreifen um den Wert so manuel dem Model zuweisen zu können?