Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > dataTable binding= и f:faces


Автор: Fedrus 1.10.2009, 15:44
Всем привет smile .
Я создаю динамически таблицу в бине которую помещаю в контейнер на странице:
Код

<rich:dataTable binding="#{price.dynamicDataTableGroup}" />


в бине код
Код

public HtmlDataTable getDynamicDataTableGroup() {
        // This will be called once in the first RESTORE VIEW phase.
        if (dynamicDataTableGroup == null) {
            loadDynamicList(); // Preload dynamic list.
            populateDynamicDataTable(); // Populate editable datatable.
        }
        return dynamicDataTableGroup;

    }
private void loadDynamicList() {
        ...
    }

    private void populateDynamicDataTable() {
        // Create <h:dataTable value="#{myBean.dynamicList}" var="dynamicItem">.
        HtmlDataTable dynamicDataTable = new HtmlDataTable();
        dynamicDataTable.setValueExpression("value", createValueExpression("#{price.dynamicList}", ArrayList.class));
        dynamicDataTable.setVar("dynamicItem");
        dynamicDataTable.setStyleClass("table");
        // Iterate over columns.
        for (int i = 0; i < headItems.size(); i++) {
            // Create <h:column>.
            HtmlColumn column = new HtmlColumn();
            dynamicDataTable.getChildren().add(column);

            // Create <h:outputText value="dynamicHeaders[i]"> for <f:facet name="header"> of column.
            HtmlOutputText header = new HtmlOutputText();
            header.setValue(headItems.get(i).getDisplayName());
            column.setHeader(header);
            // Create <h:outputText value="#{dynamicItem[" + i + "]}"> for the body of column.
            HtmlOutputText output = new HtmlOutputText();
            output.setValueExpression("value", createValueExpression("#{dynamicItem[" + i + "]}", String.class));
            column.getChildren().add(output);
        }
        dynamicDataTable.getFooter();


Теперь я хочу еще добавить футер к таблице еслиб это было на jsf странице то выглядело бы так
Код

<f:facet name="footer">
      <rich:datascroller id="ds"></rich:datascroller>
 </f:facet>
</rich:dataTable>

HTMLDataTable вижу что есть метод dynamicDataTable.setFooter(UIComponent);
Но не совсем понимаю как создать UIComponent футер?
 чтоб потом в него поместить HtmlDatascroller dataScroller = new HtmlDatascroller();

Пожалуйста помогите а то уже пол дня пытаюсь разобраться...

Автор: Fedrus 2.10.2009, 12:05
И так я наконец разобрался, жалко что не додумался попробовать раньше - оказалось все просто!
И так если вы создаете динамическую таблицу в backing bean то добавть к ней facet header можно и на странице) вот так
Код

    <rich:dataTable binding="#{price.dynamicDataTableGroup}" >
        <f:facet name="footer">
            <rich:datascroller id="ds"></rich:datascroller>
        </f:facet>
    </rich:dataTable>

не забываем указать ререндерер в бине:
Код

dynamicDataTable.setReRender("ds");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)