JSF绑定不适用于<input type =“radio”

时间:2017-06-16 10:04:58

标签: jsf jsf-2.2 composite-component

=“”

我创建了一个显示&#的jsf组件34;答案&#34;建模适当的html控件。 作为answertype存在单选和多选。 对于answertype乘法选择,我可以使用

<h:selectBooleanCheckbox value="#{cc.attrs.ItemSource.selectedByUser}" />

绑定有效。 对于answertype我不能使用

目前我正在使用

 <input type="radio" name="answer#{cc.attrs.QuestionId}" value="#{cc.attrs.ItemSource.selectedByUser}" />

但是当用户选择它时,绑定似乎不起作用。发布后,相应的selectedByUser仍为false。

我有什么想法可以解决这个问题吗?

是否可以在bean中检索表单数据并将其分配给模型?

[编辑] 我的问题和答案组件看起来像这样:

问题:

<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>

答案:

<!-- 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>

0 个答案:

没有答案