我正在尝试在 PrimeFaces 4.0 中使用对话框框架,并且我有这个页面:
索引.xhtml
...
<p:commandButton value="Add Group" actionListener="#{userGroupBacking.showAddGroup}" styleClass="header-button ui-priority-primary" update="groupTable" >
<p:ajax event="dialogReturn" listener="#{userGroupBacking.addGroupHandler}" />
</p:commandButton>
...
add.xhtml(这是我的对话框视图)
<?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:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Add Group</title>
<h:outputStylesheet library="css" name="style.css" />
</h:head>
<h:body>
<h:form id="addGroupForm">
<p:messages autoUpdate="true" />
<h:panelGrid columns="2" cellspacing="10" width="300">
<h:outputLabel for="name" value="Group Name" />
<p:inputText id="name" value="#{userGroupBacking.newGroup}" required="true" requiredMessage="Group Name is Required" />
<h:panelGroup></h:panelGroup>
<h:panelGroup>
<p:commandButton value="Add" styleClass="ui-priority-primary" actionListener="#{userGroupBacking.addGroup}" />
<p:commandButton value="Cancel" actionListener="#{userGroupBacking.cancelAddGroup}" immediate="true" />
</h:panelGroup>
</h:panelGrid>
</h:form>
</h:body>
</html>
UserGroupBacking.java
@ManagedBean(name="userGroupBacking")
@ViewScoped
public class UserGroupBacking {
private String newGroup;
/*#####################################################################################
* Main Methods
######################################################################################*/
/**
* Loads the groups/add.xhtml dialog
*/
public void showAddGroup() {
Map<String, Object> options = new HashMap<String, Object>();
options.put("modal", true);
options.put("width", 350);
options.put("contentWidth", 300);
RequestContext.getCurrentInstance().openDialog("add", options, null);
}
public void addGroup() {
RequestContext.getCurrentInstance().closeDialog(null);
}
public void cancelAddGroup() {
RequestContext.getCurrentInstance().closeDialog(null);
}
public void addGroupHandler() {
System.out.println("newGroup = "+newGroup);
}
/*#####################################################################################
* Getters/Setters
######################################################################################*/
public String getNewGroup() {
return newGroup;
}
public void setNewGroup(String newGroup) {
this.newGroup = newGroup;
}
}
问题在于addGroupHandler
,newGroup 总是打印空值。不应该从我的对话框中设置吗?