Hallo,
ich möchte mit einem Button einen Dialog öffnen. Da vorher validiert werden soll, nutze ich ein boolean im Bean um zu prüfen, ob der Dialog angezeigt werden soll. Komischerweise funktioniert das Ganze genau ein mal und dann nicht mehr. Erst wenn ich die Seite neu lade, dann funktioniert es wieder einmal.
Ich habe mal das Ganze zusammengeschrumpft:
[XML]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<h:html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns
="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<h:form id="d">
<p:commandButton icon="ui-icon-plusthick" update="@form"
actionListener="#{test.showDialog}" value="Dialog ON"></p:commandButton>
<p:dialog id="dlg" appendToBody="true" width="400" header="Test"
resizable="false" modal="true" visible="#{test.dlgOn}">
<p:ajax event="close" listener="#{test.closeDialog}" />
<h
utputText value="TEST"></h
utputText>
</p:dialog>
</h:form>
</h:body>
</h:html>[/XML]
Die ActionListener werden beide richtig ausgeführt. Nur beim 2. mal wird der Dialog nicht angezeigt. Was mache ich verkehrt?
Meine Umgebung:
ich möchte mit einem Button einen Dialog öffnen. Da vorher validiert werden soll, nutze ich ein boolean im Bean um zu prüfen, ob der Dialog angezeigt werden soll. Komischerweise funktioniert das Ganze genau ein mal und dann nicht mehr. Erst wenn ich die Seite neu lade, dann funktioniert es wieder einmal.
Ich habe mal das Ganze zusammengeschrumpft:
[XML]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<h:html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns
<h:head></h:head>
<h:body>
<h:form id="d">
<p:commandButton icon="ui-icon-plusthick" update="@form"
actionListener="#{test.showDialog}" value="Dialog ON"></p:commandButton>
<p:dialog id="dlg" appendToBody="true" width="400" header="Test"
resizable="false" modal="true" visible="#{test.dlgOn}">
<p:ajax event="close" listener="#{test.closeDialog}" />
<h
</p:dialog>
</h:form>
</h:body>
</h:html>[/XML]
Java:
import java.io.Serializable;
import javax.faces.event.ActionEvent;
import org.apache.log4j.Logger;
import org.primefaces.event.CloseEvent;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component("test")
@Scope(value = "session")
public class BNTest implements Serializable {
private static final long serialVersionUID = 2864938496912061302L;
private static Logger log = Logger.getLogger(BNTest.class);
private boolean dlgOn = false;
public void showDialog(ActionEvent ae) {
dlgOn = true;
log.debug("showDialog: " + dlgOn);
}
public void closeDialog(CloseEvent ae) {
dlgOn = false;
log.debug("showDialog: " + dlgOn);
}
public boolean isDlgOn() {
return dlgOn;
}
public void setDlgOn(boolean dlgOn) {
this.dlgOn = dlgOn;
}
}
Die ActionListener werden beide richtig ausgeführt. Nur beim 2. mal wird der Dialog nicht angezeigt. Was mache ich verkehrt?
Meine Umgebung:
- Tomcat 7
- Primefaces 3.4.2
- Spring 3
- JSF 2