Отправка значений сне работает, работает должным образом в JSF - PullRequest
0 голосов
/ 19 января 2012

Когда я пытался отправить некоторые значения с помощью h: commandButton ... я получил нулевое значение в бобе ...

мой код xhtml:

  <p:commandButton action="#{favouriteAction.setFavourite}"  value="Add as Favorite" rendered="#{favouriteBean.favouriteButton}">
  <f:setPropertyActionListener target="#{favouriteAction.ngoID}" value="#{InsertDataDaoService.ngo_id}"></f:setPropertyActionListener> 
  </p:commandButton>    

В основеbean Я только что попытался напечатать значение, которое я передал с помощью моей кнопки, но оно становится пустым ...

In favouriteAction.java (My backing Bean)

  public Integer ngoID;

public Integer getNgoID() {
return ngoID;
}


public void setNgoID(Integer ngoID) {
this.ngoID = ngoID;
}

    public String setFavourite(){

      System.out.println("Ngo id: "+ngoID);
   System.out.println("Ngo id: "+getNgoID);

    return "";
}

В консоли яdint получить любые исключения, мой o / p равен

идентификатор Ngo: 0 идентификатор Ngo: 0

, что является нулем, и оно не передается ..

Ответы [ 2 ]

1 голос
/ 19 января 2012

<f:setPropertyActionListener> оценивается во время запроса отправки формы, а не во время запроса отображения формы.Таким образом, если его значение #{InsertDataDaoService.ngo_id} не сохранено для этого запроса, то произойдет сбой.

У вас есть в основном 2 варианта:

  1. Убедитесь, что #{InsertDataDaoService.ngo_id} сохраняется для запроса отправки формы.Как именно это сделать, зависит от функциональных требований, которые не ясны из вопроса.Но, как правило, достаточно поместить компонент #{InsertDataDaoService} в область просмотра с помощью @ViewScoped и убедиться, что вы не выполняете какую-либо деловую работу в методе получения.

  2. Заменить<f:setPropertyActionListener> на <f:param> с @ManagedProperty.

    <p:commandButton action="#{favouriteAction.setFavourite}" value="Add as Favorite" rendered="#{favouriteBean.favouriteButton}">
        <f:param name="ngoID" value="#{InsertDataDaoService.ngo_id}" />
    </p:commandButton>
    

    с

    @ManagedProperty("#{param.ngoID}")
    private Integer ngoID;
    

    Таким образом, значение будет получено (и встроено как часть вспомогательной функции JavaScriptcommandButton) во время запроса на отображение формы, не оценивается во время запроса на отправку формы.

См. Также:

1 голос
/ 19 января 2012

Вы проверили, что значение InsertDataDaoService.ngo_id не равно NULL?Попробуйте заменить его на постоянное значение.Это работает?

...