Я реализует ап: DataTable компонент, основанный на Primefaces ShowcasePrimefaces р: celleditor celledit
Код:
<p:dataTable
id="newDataTable"
editable="true"
editMode="cell"
var="item"
value="#{myBean.listNewDataTable}">
<p:ajax event="cellEdit" listener="#{myBean.newCellEditListener}" update="@this"/>
<p:column width="150" >
<p:cellEditor>
<f:facet name="output">
<h:inputText value="#{item.description}" readonly="true"/>
</f:facet>
<f:facet name="input">
<p:selectOneMenu value="#{item.id}" style="width: 90%;">
<f:selectItems value="#{myBean.productsMap.entrySet()}" var="entry" itemValue="#{entry.key}" itemLabel="#{entry.value}" />
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
-- More Data --
</p:dataTable>
И метод подложки боб:
public void newCellEditListener(CellEditEvent event){
... Some work here ...
}
Когда значение для редактируемой ячейки изменяется, p: cellEditor работает должным образом.
Проблема заключается в том:
Когда значение на редактируемой ячейки остается неизменным, р: cellEditor показывает, когда он item-id должно быть на самом деле показывая item.description.
Я пропустил что-то очевидное? Нужна ли мне дополнительная настройка?
Я искал подсказку или ответ, но безуспешно.
UPDATE
Такая же проблема сохраняется на следующий код:
<p:column headerText="Money" width="150" >
<p:cellEditor >
<f:facet name="output">
<h:inputText value="#{actual.money}" readonly="true">
<f:convertNumber type="currency" />
</h:inputText>
</f:facet>
<f:facet name="input">
<h:inputText value="#{actual.money}">
</h:inputText>
</f:facet>
</p:cellEditor>
</p:column>
Значение на вспомогательном компоненте его же для ввода и вывода, разница между друг с другом, должны быть «валюта '.
UPDATE
В качестве обходного пути я использовал "р: CommandButton" обновить DataTable.
<p:commandButton icon="ui-icon-refresh" update="newDataTable" value="Update" />
приложение работает на:
- Primefaces 3,5
- Primefaces Extensions 0.7.1
- Mojarra 2.1.22
- Tomcat 7
Спасибо за ваш Помогите. С наилучшими пожеланиями.
Почему вы используете компонент ввода для фасета 'output'? Почему не ' '? –
kolossus
@kolossus На самом деле пользователь хочет видеть текст ввода вместо – Zerato