我有一个问题,即 t:radio(与 t:selectOneRadio 相关联)的值未传递给支持 bean。我们目前正在从 JSF 1.x 转换到 JSF 2.x,在 Jboss 7.2.0 上使用 MyFaces 2.1.13,并且我们确实有 2.0 版本的 Tomahawk 库。我花了几个小时尝试不同的事情来让它工作并搜索高低,但找不到遇到同样问题的其他人。我已经确定一旦检查了值,就永远不会调用 setter。
我已经提取了代码并对其进行了简化,但仍然没有通过 ajax 调用传递任何内容。
<h:form id="profileReport">
<h:messages />
<h:panelGrid columns="2">
<t:selectOneRadio id="selectQuestionnaire" layout="spread" required="true"
value="#{viewProfile.selectedQuestionnaire}">
<f:selectItem itemValue="SC_PRE!20121212095427.0000000.059814626868021525" />
<f:ajax event="click" execute="@this" render="profileReport:selectTemplate profileReport" />
</t:selectOneRadio>
<h:outputLabel for="selectQuestionnaire" value="#{prmsgs.firstQuestionnaireLabel}" styleClass="labelText" />
<t:radio index="0" for="profileReport:selectQuestionnaire" />
<h:outputLabel for="selectTemplate" value="#{prmsgs.exploratoryProcessTemplate}:" styleClass="labelText" />
<h:selectOneListbox id="selectTemplate" value="#{viewProfile.selectedInterpretiveProfileTemplateId}" required="#{menuNavigation.selectInterpretiveProfileActive}">
<f:selectItems value="#{viewProfile.interpretiveProfileTemplates}"/>
</h:selectOneListbox>
</h:panelGrid>
</h:form>
仅出于测试目的,我已将 t:selectOneRadio 替换为 h:selectOneRadio 并调用了 setter。然后我尝试了没有 t:radio 的 t:selectOneRadio 并且成功了。所以这似乎是 t:radio 的问题,尽管我现在不确定它是什么。我知道 Icefaces 也有类似的功能,但我现在不想介绍另一个完整的组件库只是为了这个单一的用途。我们正在尝试尽可能减少更改,因为这是一个非常精益的转换过程。