这是一个相关(和或后续)问题:
Event Function called before Setter
所以鉴于我有:
<Td>
<h:selectOneMenu id="combocarList"
value="#{customerBean.selectedcar}"
styleClass="comboStyle"
valueChangeListener="#{customerBean.loadothercombos}"
onchange="document.forms[0].submit()"
>
<f:selectItem
itemLabel="-----------Select--------------"
itemValue="None" />
<f:selectItems value="#{customerBean.carsList}" />
</h:selectOneMenu>
</Td>
当用户从下拉列表中选择一个项目并且backbean执行处理以检索其他下拉列表的值时,会调用该事件,但是我还有一个h:datatable是问题所在。这些值不会显示。
数据表定义为:
<h:dataTable
id="calDetails" rowClasses="oddrow,evenrow"
headerClass="thHeading" var="car"
value="#{cardetails.allinfo}">
<h:column>
<f:facet name="header">
<h:outputText id="lblCode" value="Code"></h:outputText>
</f:facet>
<h:inputHidden value="#{car.code}"></h:inputHidden>
<h:outputText id="carcodeid"
value="#{car.code}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText id="lblCode" value="Sold"></h:outputText>
</f:facet>
<h:inputHidden value="#{car.sales}"></h:inputHidden>
<h:outputText id="carsalesid"
value="#{car.sales}"></h:outputText>
</h:column>
</h:dataTable>
我有cardetails.allinfo
的setter和getter,我知道调用document.forms[0].submit()
时cardetails.allinfo
不为空,因为我使用
<h:outputText value="#{cardetails.allinfo eq null}" />
返回false。我一直在为它主演几个小时,看不出我的错。我会很感激任何投入。感谢
答案 0 :(得分:2)
显然这个清单是空的。更好的调试是
<h:outputText value="#{not empty cardetails.allinfo}" />
只要true
不是allinfo
且不为空,就会显示null
。你也可以这样做
<h:outputText value="#{cardetails.allinfo}" />
以纯文本形式查看ArrayList#toString()
所代表的所有列表项。如果你看到[]
那么它确实是空的。否则,如果您看到[com.example.Car@1234,com.example.Car@5678]
,则它有2个Car
项(假设您没有覆盖其toString()
方法以返回更多人类可读的字符串表示,就像许多初学者一样;))
如果是空列表,则需要从数据库调试并修复列表加载逻辑。