Sie haben dies:
public void openDialog(String someView) {
RequestContext.getCurrentInstance().openDialog(someView);
}
Also, wenn Sie dies tun:
<h:form id="form">
<p:commandButton id="button" value="Click" actionListener="#{bean.openDialog('someView')}" />
</h:form>
Sie empfangen diese in Ihrer Ajax Antwort:
PrimeFaces.openDialog({
url:'/some/address/view.xhtml',
pfdlgcid:'cf8e7955-a6cf-4dd8-9a07-55cd29696a64',
sourceComponentId:'form:button',
sourceWidget:PF('widget_form_button'),
options:{}});
Also, Sie dies ausprobieren können:
<h:form id="form">
<p:commandButton id="button" value="Click" onclick="PrimeFaces.openDialog({
url:'/some/address/view.xhtml',
pfdlgcid:'cf8e7955-a6cf-4dd8-9a07-55cd29696a64',
sourceComponentId:'form:button',
sourceWidget:PF('widget_form_button'),
options:{}});" />
</h:form>
Sie können sogar den Rückgabewert verwenden:
<h:form id="form">
<p:growl id="growl" showDetail="true" />
<p:commandButton id="button" value="Click" onclick="PrimeFaces.openDialog({
url:'/some/address/view.xhtml',
pfdlgcid:'cf8e7955-a6cf-4dd8-9a07-55cd29696a64',
sourceComponentId:'form:button',
sourceWidget:PF('widget_form_button'),
options:{}});">
<p:ajax event="dialogReturn" listener="#{bean.returnedValue}" update="growl" />
</p:commandButton>
</h:form>
Die AJAX ist nur das Ergebnis an die Ziel-URL zu drehen. Wenn Sie bereits die Ziel-URL haben, müssen Sie dies nicht tun. In meinen grundlegenden Tests funktioniert das gut, genau wie das Original, außer dass Sie die Zieladresse im 'URL'-Feld übergeben müssen, nicht das Ergebnis.
Hoffe das hilft.
p: commandButton hat standardmäßig ajax = "true", warum möchten Sie p: ajax aufrufen, haben Sie versucht, ajax = "false" zu machen. – user1433804
Ja, ich weiß, aber was ist, wenn ich den Dialog für Ereignisse öffnen möchte, bei denen die Aktion nicht wie die Datentabellenzeile ausgelöst werden kann ????? ... ajax = false funktioniert nicht. –