jsf中的数据访问问题

时间:2011-08-18 15:11:50

标签: java jsf facelets

我有以下类文件:

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访问其他数据时,它可以工作,所以整个设置应该没问题。

2 个答案:

答案 0 :(得分:2)

你不应该在“getData()”中写“get”和“()”, 另外,我认为你不需要数据表中的“foreach”

从这个例子看 http://richfaces-showcase.appspot.com/richfaces/component-sample.jsf?demo=dataTable&sample=tableStyling&skin=blueSky

<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()方法。

你明白了吗?