我有一个体面的应用程序,Primefaces负责GUI。但是我在尝试使用Dialog Framework时遇到了麻烦。
我相信我已经完成了文档中的所有指导原则。 对话框显示应该显示,但是' dialogReturn' -event似乎没有触发(或被捕获)。 至少我没有在html文件
中指定的监听器例程中获得任何活动<p:commandLink title="Remove user" actionListener="#{ctrlUsersBean.pbDeleteUserPrepare(user)}"
styleClass="ui-icon ui-icon-trash">
<p:ajax event="dialogReturn" listener="#{ctrlUsersBean.pbDeleteUser}" />
</p:commandLink>
在Dialog中我只有几个commandButtons。 在我从Dialog触发(我实际上到达那里)的actionListener中,我做了一个CloseDialog调用:
MyObject w = new MyObject(1);
RequestContext.getCurrentInstance().closeDialog(w);
我将一个对象传递回父页面,我期望在我的监听程序例程中将其取出
public void pbDeleteUser(SelectEvent ev) {
MyObject w =(MyObject)ev.getObject();
...
但我从未接受过此代码。
我正在使用SessionBean来运行所有涉及的代码。
我正在运行Primefaces 5.2版
我已在&#39;应用程序&section-section中包含指定的3行 faces-config.xml文件。
首先,我只在Netbeans中运行它(v.7.4), 但我觉得应该可行。
如果有人知道我哪里出错了,我会非常感激。
问候,Erik
由于问题,我添加了一些我的代码。
以下是来自xhtml文件的更多信息,显示变量来源&#39;用户&#39;:
<p:dataTable id="showUsersList" var="user" value="#{ctrlUsersBean.showUsersList}"
scrollable="true" scrollHeight="200" liveResize="true"
rowKey="#{user.usrEcid}" selection="#{ctrlUsersBean.showUserDetail}" selectionMode="single"
resizableColumns="true"
emptyMessage="No users">
<p:ajax event="rowSelect" process="@this" listener="#{ctrlUsersBean.onSpreadRowSelect}" update=":showEditUsersForm"/>
<p:column headerText="ecid" sortBy="#{user.usrEcid}"><h:outputText value="#{user.usrEcid}" /></p:column>
...
<p:column headerText="#{sessionUser.doTekst('html_users_Aksjon')}">
<h:panelGrid columns="1" styleClass="actions" cellpadding="0">
<p:commandLink title="Delete user" actionListener="#{ctrlUsersBean.pbDeleteUserPrepare(user)}"
styleClass="ui-icon ui-icon-trash">
<p:ajax event="dialogReturn" listener="#{ctrlUsersBean.pbDeleteUser}" />
</p:commandLink>
</h:panelGrid>
</p:column>
</p:dataTable>
和pbDeleteuserPrepare()例程
public void pbDeleteUserPrepare(WlCdUser user) {
// called from the user-spread
setDeleteUser(user); // Set the (global) user-to-delete
...
try {
RequestContext.getCurrentInstance().openDialog("deleteUser");
} catch (Exception e) {
logger.log(Level.SEVERE, "pbDeleteUserPrepare(), unable to open Dialog, Error=" + e.getMessage());
}
}
deleteUser.xhtml文件非常简单
<head>
<title>Delete user</title>
<meta name="viewport" content="width=device-width"/>
</head>
<h:body>
<h:form id="deleteFrom" >
<p:panel id="deleteConfirmation" widgetVar="deleteConfirmation" header="Confirm deletion="height:100px;vertical-align: center" >
<p:outputLabel value="Full Delete, or just Deactivate user?"/>
<p:panelGrid columns="3">
<p:commandButton value="Yes, Full Delete" actionListener="#{ctrlUsersBean.pbDeleteUser(1)}"/>
<p:commandButton value="No, just Deactivate" actionListener="#{ctrlUsersBean.pbDeactivateUser(0)}"/>
</p:panelGrid>
</p:panel>
</h:form>
</h:body>
按钮背后的例程:
public void pbDeleteUser(int operation) {
// called from the delete dialog
logger.log(Level.INFO, "Called pbDeleteUser(), operation = " + operation);
WlCdUser w = DoUserOperation(getDeleteUser(), operation);
RequestContext.getCurrentInstance().closeDialog(w);
}
public void pbDeactivateUser(int operation) {
// called from the delete dialog
logger.log(Level.INFO, "Called pbDeactivateUser(), operation = " + operation);
WlCdUser w = DoUserOperation(getDeleteUser(), operation);
RequestContext.getCurrentInstance().closeDialog(w);
}