我有一个带有多个Dialog的表单,其中一个调用带参数的函数,但我不知道为什么不工作。其他对话框工作正常。带参数的对话框:
<p:dialog widgetVar="windowsConfirmOperation" position="center middle" resizable="false"
header="¡Warning!" closable="false" showEffect="fade" hideEffect="fade"
id="idWindowsConfirmOperation" modal="true">
<p:panel>
<div class="DispBlock Responsive100">
<p:outputLabel value="Are you sure?"
escape="false"/>
</div>
</p:panel>
<div class="DispBlock ui-contenedor-botones-accion Fright">
<p:commandButton value="YES"
oncomplete="PF('windowsConfirmOperation').hide();"
update="@form" process="@form"
action="#{queryView.confirmOperation('true')}">
</p:commandButton>
<p:commandButton value="NO"
oncomplete="PF('windowsConfirmOperation').hide();"
update="@form" process="@form"
action="#{queryView.confirmOperation('false')}">
</p:commandButton>
</div>
</p:dialog>
我的视图类叫QueryView:
@SessionScoped
@ManagedBean
public class QueryView {
....
public void confirmOperation(String confirm) {
if ("true".equals(confirm)) {
doSomeThing();
}
}
}
我调试但对话框从不调用该函数。我将Boolean的参数更改为String但不起作用。我做错了什么?
问候。
答案 0 :(得分:0)
最后我修改了我的逻辑,现在代码可以工作了。
<p:dialog widgetVar="windowsConfirmOperation" position="center middle" resizable="false"
header="¡Warning!" closable="false" showEffect="fade" hideEffect="fade"
id="idWindowsConfirmOperation" modal="true">
<p:panel>
<div class="DispBlock Responsive100">
<p:outputLabel value="Are you sure?"
escape="false"/>
</div>
</p:panel>
<div class="DispBlock ui-contenedor-botones-accion Fright">
<p:commandButton value="YES"
oncomplete="PF('windowsConfirmOperation').hide();" process="@this"
action="#{queryView.confirmOperation}">
</p:commandButton>
<p:commandButton value="NO"
onclick="PF('windowsConfirmOperation').hide();"
>
</p:commandButton>
</div>
</p:dialog>
如何只有YES按钮才能使用该功能,现在我不需要参数。所以我的功能改为:
public void confirmOperation() {
doSomeThing();
}
编辑: 如果我传递布尔也可以。
action="#{queryView.confirmOperation('true'}">
和java文件
public void confirmOperation(Boolean something) {
doSomeThing();
}
通过这些更改,我的代码运行正常。
此致