JSF Rich scroallable Datatable Проблема - PullRequest
0 голосов
/ 19 марта 2011

В прокручиваемой таблице данных, которая отображает коллекцию объектов, я должен добавить одну ручную строку в качестве первой строки. В этой строке содержится inputText, с помощью которого пользователь может вводить некоторые значения, и, нажимая клавишу ввода, эти значения сохраняются и отображаются в нижних строках. Я не смог добавить эту строку вручную в качестве первой строки. Ниже приведен текущий код.

<rich:scrollableDataTable value="{resultList}" var="result">
<rich:column>
 <f:facet name="header">Name</f:facet>
<h:outputText value="#{result.name}" />
</rich:column>
<rich:column>
 <f:facet name="header">Category</f:facet>
<h:outputText value="#{result.category}" />
</rich:column>
</rich:scrollableDataTable>

Приведенный выше код предназначен только для отображения значений из серверной части.

enter image description here

1 Ответ

1 голос
/ 19 марта 2011

1) Для этого вы должны использовать bind rich: scrollableDataTable с экземпляром HtmlScrollableDataTable в базовом компоненте.

В вспомогательном компоненте создайте его экземпляр с помощью методов доступа, а затем вы можете соответствующим образом инициализировать его с помощьюдобавление компонентов inputText.Добавьте actionListeners к этим компонентам ввода, а затем в слушателях вы можете добавить эти значения inputText как outputText в таблицу снова как строки соответственно.

2) В противном случае вы можете использовать inputText вместо outputText и отключить последующие строки, а затемВо-первых, поэтому могут отображаться только данные - предотвращая ввод.

<rich:scrollableDataTable value="{resultList}" var="result">
<rich:column>
 <f:facet name="header">Name</f:facet>
<h:inputText value="#{result.name}" disabled ="#{!result.isFirstRow}"/>
</rich:column>
<rich:column>
 <f:facet name="header">Category</f:facet>
<h:inputText value="#{result.category}" disabled ="#{!result.isFirstRow}"/>
</rich:column>
</rich:scrollableDataTable>

Backing Bean:

//---

public void initialize(){

     resultList.add(new Result("", "", true)); // Setting 1st input row enabled
} 

public void inputListener(ActionEvent event){


     // appending object based on input to the resultList

     resultList.add(new Result(inputName, inputValue, false));

     // added a boolean field to identify rows added later & to make them enable/disable accordingly
}

//---

Я не знаком с Richfaces, но пытался добиться этого, как я делалэто с IceFaces.

...