У меня есть actionListener для обнаружения нажатия кнопки команды, затем я намерен установить логическую переменную в значение true и оценить ее в другом методе, который будет выполнен; если верно, то загружаются некоторые элементы; если false, загружаются другие элементы:
Xhtml:
<h:form id="myFormID" ... >
<p:commandButton id="myButtonID" value="Some Title" action="#{myController.pressedFilter()}" actionListener="#{myController.checkClicked}" />
...
</h:form>
Класс контроллера:
//the boolean variable:
private boolean clicked;
public boolean isClicked() {
return clicked;
}
public void setClicked(boolean clicked) {
this.clicked = clicked;
}
//the actionListener to detect the button clicked:
public boolean checkClicked(ActionEvent ev) {
String buttonClickedID = ev.getComponent().getClientId();
if (buttonClickedID.equals("myFormID:myButtonID")) {
setClicked(true);
}
return clicked;
}
//the method to retrieve the items:
public Collection<T> getItems() {
if (isClicked()) {
items = this.ejbFacade.findSomeItems();
} else if (!isClicked()) {
items = this.ejbFacade.findAnotherItems();
}
return items;
}
//clears all datatable filters:
public String pressedFilter() {
clearAllFilters();
return "/app/index";
}
К сожалению, я не знаю, почему это не работает, как я ожидал.
Если я нажму на командную кнопку, для логической переменной будет установлено значение true; но при его оценке я не знаю, почему значение ложно.
Может ли кто-нибудь объяснить, что я делаю неправильно, и помочь мне исправить это, чтобы все работало так, как я описал?
Заранее спасибо.
@ViewAccessScoped
из deltaspike: deltaspike.apache.org/documentation/jsf. html#@ViewAccessScoped - person Kukeltje   schedule 02.07.2018