我有以下类文件:
class RowData {
...
ArrayList<String> valueMap;
...
}
class Bean {
...
public List<RowData> getData() {
...
}
}
jsf code snippet:
...
<h:form>
<rich:dataTable id="overviewTable" value="#{bean.getData()}" var="row">
<c:forEach items="#{row.valueMap}" var="r">
<rich:column>
<h:outputText value="#{r}" />
</rich:column>
</c:forEach>
</rich:dataTable>
</h:form>
...
不幸的是,该表没有出现。怎么了?该页面没有显示错误或其他内容,表格不存在(在此版本中我跳过了所有getter和setter ......)。当我想从bean访问其他数据时,它可以工作,所以整个设置应该没问题。
答案 0 :(得分:2)
你不应该在“getData()”中写“get”和“()”, 另外,我认为你不需要数据表中的“foreach”
<rich:dataTable value="#{carsBean.allInventoryItems}" var="car"
id="table" rows="20" rowClasses="odd-row, even-row"
styleClass="stable">
<rich:column accept="#{carsFiteringBean.acceptVendor}">
<f:facet name="header">
<h:outputText value="Vendor " />
</f:facet>
<h:outputText value="#{car.vendor}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Model" />
</f:facet>
<h:outputText value="#{car.model}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Price" />
</f:facet>
<h:outputText value="#{car.price}" />
</rich:column>
<rich:column filter="#{carsFilteringBean.mileageFilterImpl}">
<f:facet name="header">
<h:outputText value="Mileage" />
</f:facet>
<h:outputText value="#{car.mileage}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="VIN " />
</f:facet>
<h:outputText value="#{car.vin}" />
</rich:column>
</rich:dataTable>
</h:form>
答案 1 :(得分:0)
请改用value="#{bean.data}"
。请记住,您正在使用E.L,并假设您通过getter方法data
引用名为getData()
的java bean属性。 data属性可能不存在,但命名方法肯定应该像这样命名。
此外,为了使用items="#{row.valueMap}"
惯用语,您的bean类中必须有一个getValueMap()
方法。
你明白了吗?