另一个有条件地打开全局 p:confirmDialog 和 p:confirm

问题描述 投票:0回答:1

我有一个由

PrimeFaces.current().dialog().openDynamic()
显示的对话框。该对话框中有一些输入字段和两个按钮。一种用于应用任何更改,另一种用于取消。在应用更改之前,我想显示一条确认消息。但仅当输入字段具有某些特定值时。

<p:form>
  <p:panelGrid columns="2">
    <p:outputLabel for="input1" value="Input 1">
    <p:inputText id="input1" value="#{bean.input1}">
    <p:outputLabel for="input2" value="Input 2">
    <p:inputText id="input2" value="#{bean.input2}">
  </p:panelGrid>
  <p:panelGrid columns="2">
    <p:commandButton id="apply" action="#{bean.apply}">
      <p:confirm header="Confirmation" 
                 message="Do you really want to apply the values?" 
                 beforeShow="beforeShow();"
                 disabled="#{not bean.showConfirm()}">
    </p:commandButton>
    <p:commandButton id="cancel" action="#{bean.cancel}">
​  </p:panelGrid>
</p:form>

现在的问题是,当显示对话框时,会评估

#{bean.showConfirm()}
disabled
。但我需要在按下应用按钮时评估
disabled

我还尝试使用

beforeShow
,其记录为:在显示确认对话框之前执行回调。返回 false 以防止出现对话框。

function beforeShow(){
    alert('*** beforeShowFalse ***');
    return false;
}

但是无论

beforeShow()
返回什么,总是会显示确认对话框。

欢迎任何提示!

我正在使用 PF 12.0.4 和 JSF 2.3。

jsf primefaces
1个回答
0
投票

我通过检查

p:confirm
方法是否应显示确认消息,在没有全局
apply()
的情况下解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.