PrimeFaces:внутрине работает должным образом при вызове AJAX - PullRequest
1 голос
/ 27 декабря 2011

В моем приложении я использую <p:inline> компонент <p:dataTable> PrimeFaces для реализации функции обновления следующим образом:

<p:dataTable var="m" value="#{mrBean.menu}">

   <p:column headerText="Name" >
      <p:inplace editor="true" >
         <p:ajax event="save" listener="#{mrBean.changeName}" update="button" />  
         <p:inputText value="#{m.name}" />  
      </p:inplace>
   </p:column>

</p:dataTable>

<p:commandButton id="button" value="Confirm" actionListener="#{mrBean.confirm}"
                 disabled="#{not mrBean.canConfirm}"/> 

И это мой Managedbean:

@ManagedBean(name = "mrBean")
@ViewScoped
public class MrBean {
   private List<Meal> menu;
   private boolean    canConfirm;

   public void changeName() {
      this.canConfirm = true;
   }

   public void confirm() {
      System.out.println("Updated database!");
   }
}

КогдаЯ закончил редактирование name и нажал «Сохранить», моя кнопка «Ешь» не была включена.

Буду очень признателен, если вы покажете мне, что я сделал не так.Я использую PrimeFaces 3.0.RC2.

Ответы [ 3 ]

1 голос
/ 27 декабря 2011

отлично работает для меня,

Полагаю, вы пропустили какой-то код из того, который вы опубликовали специально, но если нет, опубликуете тот, который я сгенерировал, рядом с тем, который вы опубликовали ...

private String  someText ="xxx";


public String getSomeText() {
    return someText;
}

public void setSomeText(String someText) {
    this.someText = someText;
}

 public boolean isReadyToEat() {
    return readyToEat;
 }

public void setReadyToEat(boolean readyToEat) {
    this.readyToEat = readyToEat;
}

и обернул код xhtml с <h:form>

, и он работает 100%

вывод

Готов к употреблению: правда

YUMMY!

1 голос
/ 28 декабря 2011

Проблема в том, что <p:inline> нельзя использовать внутри <p:dataTable> для редактирования.Вместо этого я должен использовать <p:cellEditor>.

0 голосов
/ 27 декабря 2011

Вы должны иметь логический метод isReadyToEat() {return readyToEat;} в вашем бине (и String getSomeText(), void setSomeText(String text)).Вам также необходимо поместить commandButton и на место внутри формы тег.

Если кнопка становится активной после обновления страницы в браузере, вам, вероятно, понадобится

<f:ajax execute="@form" render="button" />

внутри метки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...