У меня есть очень простой Xhtml файл где panelGroup
содержащий commandButton
добавляется на страницу, нажав кнопку переключения, но это динамически добавляемые commandButton
не выполняет его actionlistener
на время нажатия.CommandButton внутри динамически визуализации panelGroup не выполняет ActionListener
Полный код ниже:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<h:panelGroup id="checkDyna">
<h:panelGroup rendered="#{listRetriever.booleanStatus}" >
<h:form>
<p:commandButton value="check" process="@all" actionListener="#{listRetriever.xx()}"/>
</h:form>
</h:panelGroup>
</h:panelGroup>
<h:form>
<p:commandButton value="Toggle" actionListener="#{listRetriever.toggleBooleanStatus()}" update=":checkDyna"/>
</h:form>
</h:body>
</html>
Bean
@ManagedBean(name = "listRetriever")
@RequestScoped
public class ListRetriever implements Serializable {
private boolean booleanStatus;
public void toggleBooleanStatus(){
if (!booleanStatus)
booleanStatus=true;
}
public void xx(){
System.out.println("Invoked***");
}
public boolean isBooleanStatus() {
return booleanStatus;
}
public void setBooleanStatus(boolean booleanStatus) {
this.booleanStatus = booleanStatus;
}
}
При удалении rendered="#{listRetriever.booleanStatus}"
ActionListener успешно вызывается.
При изготовлении бобов ViewScoped
проблема устранена, но я не хочу, чтобы она была шире, чем RequestScoped
.
Возможный дубликат [h: commandLink/h: commandButton не вызывается] (http://stackoverflow.com/questions/2118656/hcommandlink-hcommandbutton-is-not-being-invoked) – BalusC