JSF 2 Отправка формы - PullRequest
       20

JSF 2 Отправка формы

0 голосов
/ 04 апреля 2011

У меня есть следующие коды Facelet:

<h:inputText id="searchtext" value="#{SearchBean.input}" />
<h:commandButton value="#{msg.BUTTON_SEARCH_LABEL}" title="#{msg.BUTTON_SEARCH_LABEL}"
  action="#{SearchBean.Submit}" />

SearchBean имеет следующее:

@ManagedBean(name = "SearchBean")
@RequestScoped
public class SearchBean implements Serializable
{
    private String input = null;
    private Boolean submitted = false; 

    public String getInput() {
       return input;
    }

    public boolean getSubmitted() {
       return submitted;
    }      

    public void setInput(String input) {
       this.input = input;
    }

    public void setSubmitted(Boolean submitted) {
       this.submitted = submitted;
    }

    public String Submit() {
       System.out.println(">>> SUBMITTED <<<"); 
       submitted = true;
       return "";
   }    
}

Метод SearchBean вызывается в BookService bean следующим образом:

@Stateless
public class BookService()
{
    @Inject
    private SearchBean searchBean;

    @PostConstruct
    public void init()
    {
       Boolean isSearch = isSubmitted();
       if (isSearch) {
          // some codes
       } else {
          // other codes
       }
    }

    public Boolean isSubmitted() {
       System.out.println("STATUS: " + searchBean.getSubmitted()); 
       return searchBean.getSubmitted();
    }       
}

Когда я отправляю форму, возвращаемый статус методом getSubmitted () метода SearchBean всегда возвращает false .Я ожидаю, что это вернет true при отправке формы.Я не знаю, что делать.

Является ли FlashScoped единственным используемым вариантом с отправкой формы в JSF 2?Любой специалист по уходу комментирует.

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Используйте @ViewScoped и верните null в методе submit ():

public String Submit() {
       submitted = true;
       return null;
}    

Атрибуты в области видимости компонента будут сохраняться до тех пор, пока пользователь не перейдет к новому представлению. Возврат значения null из метода bean приведет к перезагрузке того же представления и сохранению состояния bean.

ОБНОВЛЕНИЕ: Первый вопрос назад: вызывается ли ваш компонент BookService из того же представления? Если нет, ViewScope не будет работать. Вместо этого вы должны поместить переданную переменную в область действия сеанса.

Убедитесь, что ваш метод submit вызывается (отладка с точкой останова внутри метода), и убедитесь, что ваши элементы формы заключены в <form> ... </form>.

0 голосов
/ 04 апреля 2011

@ RequestScoped означает, что контекст уничтожается в конце запроса сервлета.

Попробуйте @ViewScoped из @FlashScoped. Для разницы: что нового в JSF 2

...