проблема доступа к данным в jsf - PullRequest
0 голосов
/ 18 августа 2011

У меня есть следующие файлы классов:

class RowData {
...
  ArrayList<String> valueMap;
...
}

class Bean {
...
  public List<RowData> getData() {
  ...
  }
}

Фрагмент кода JSF:

...
<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>
...

К сожалению, таблица не отображается. В чем дело? Страница не показывает ошибку или что-то, таблицы просто нет (в этой версии я пропустил все методы получения и установки ...). Когда я хочу получить доступ к другим данным из bean-компонента, он работает, поэтому все настройки должны быть в порядке.

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

вы не должны писать «get» и «()» в «getData ()», Кроме того, я не думаю, что вам нужен «foreach» в датированном

посмотрите на этот пример из http://richfaces -showcase.appspot.com / RichFaces / компонент-sample.jsf? Демонстрационная = DataTable & образец = tableStyling & кожа = 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>
0 голосов
/ 18 августа 2011

Используйте value="#{bean.data}" вместо. Помните, что вы используете E.L, и предполагается, что вы ссылаетесь на свойство java-компонента с именем data через метод получения getData(). Возможно, свойство data не существует, но названный метод должен определенно называться следующим образом.

Кроме того, чтобы использовать идиому items="#{row.valueMap}", в вашем классе бинов должен присутствовать метод getValueMap().

Вы поняли идею?

...