我在一个 JSF 应用程序中将单选按钮标记添加到以下 JSP(已删节和匿名)。它不呈现任何单选按钮,也不调用托管 bean 中的任何相关方法。
<h:form id="orderForm">
<t:selectOneRadio
id="theRadioInput"
layout="spread"
forceId="true"
forceIdIndex="false"
value="#{bean.aStringProperty}"
styleClass="field">
<f:selectItems value="#{bean.radioSelectItems}"/>
<a4j:support
event="onclick"
reRender="theRadioInput"
actionListener="#{bean.listener}"/>
</t:selectOneRadio>
<rich:dataTable
id="dataTable"
value="#{bean.listOfDataObjects}"
var="curDataObject"
rowKeyVar="index">
<rich:column style="border-left">
<rich:panel style="border:none">
...
</rich:panel>
</rich:column>
<rich:column>
<h:outputText value="#{curDataObject.location}" styleClass="label" style="font-size:12;"/>
<rich:dataList var="item" value="#{curDataObject.someItems}" rowKeyVar="itemIndex" styleClass="noWrap">
<h:outputText value="Some data:" styleClass="label" />
<h:outputText value="#{item}" styleClass="label" />
</rich:dataList>
<t:radio for=":orderForm:theRadioInput" index="#{index}" rendered="curDataObject.radioApplicable"/>
</rich:column>
</rich:dataTable>
</h:form>
我想知道,我正在使用的事实<rich:dataTable>
,没有<t:dataTable>
什么不同吗?还有什么可以阻止单选按钮出现?bean.getRadioSelectItems()
在渲染期间甚至不会被调用。(它确实会在稍后提交页面时调用。)
如果您坚持,也许我会从托管 bean 发布相关代码,但我认为这不是问题,因为它甚至没有被调用。
此页面的“真实”版本有效,并且已经在生产应用程序中使用了几年。添加单选按钮是唯一的变化。