2013-07-24 4 views
2

Я реализует ап: 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

Спасибо за ваш Помогите. С наилучшими пожеланиями.

+0

Почему вы используете компонент ввода для фасета 'output'? Почему не ''? – kolossus

+0

@kolossus На самом деле пользователь хочет видеть текст ввода вместо – Zerato

ответ

0

Значения на выходе и входе должны быть одинаковыми. Попытайтесь это исправить.

+0

См. Мой обновленный вопрос. Должно ли это быть одинаковое значение для ввода и вывода?Я имею в виду, должно ли это быть без формата или бизнес-логики? – Zerato

+0

Что вы подразумеваете под тем же вопросом? Какое значение теперь вы можете увидеть? –

+0

Во втором случае, когда ячейка остается неизменной, она показывает значение «actual.money» без формата. Когда ячейка изменилась, все работает так, как ожидалось. Это поведение по умолчанию? Я ошибаюсь? Спасибо за вашу помощь. – Zerato

0

Найдено вопрос сообщается и фиксируется на месте выпуска в Primefaces: http://code.google.com/p/primefaces/issues/detail?id=6116

Я скачал 4.0.RC1 и я вижу вопрос, как решается как сообщалось, но есть некоторые существенные различия в 4.0 против 3.5, так что я «Я буду ждать выхода 3.5.15.

Смежные вопросы