Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 更新bean消息值,然后将其显示在<;p:confirmDialog>;_Jsf_Primefaces_Message_Confirm - Fatal编程技术网

Jsf 更新bean消息值,然后将其显示在<;p:confirmDialog>;

Jsf 更新bean消息值,然后将其显示在<;p:confirmDialog>;,jsf,primefaces,message,confirm,Jsf,Primefaces,Message,Confirm,有人能告诉我如何更改的消息吗?单击按钮时,我希望通过messageCount()方法返回有值的消息 ... <p:outputLabel value="Test:" /> <p:inputText value="#{testController.fieldTest}" id="fieldTest"/> ... <p:commandButton value="Ok" action="#{testController

有人能告诉我如何更改
的消息吗?单击按钮时,我希望通过
messageCount()
方法返回有值的消息

...

<p:outputLabel value="Test:" />                        
<p:inputText value="#{testController.fieldTest}" id="fieldTest"/>

...

<p:commandButton value="Ok" action="#{testController.cadTest()}">
    <p:confirm id="messageConfirm" header="Test" />
</p:commandButton>

...

<p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
    <f:facet name="message">
        <p:outputPanel>
            <h:outputFormat id="message" value="#{testController.mensagemConfirm}" escape="false"/>
        </p:outputPanel>
    </f:facet>
    <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
    <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>

...


//TestController

private String mensagemConfirm;
private Integer count = 0;


public Integer messageCount() {
    return count++;
}

public String getMensagemConfirm() {
    setMessageConfirm("Count: " + messageCount());
    return mensagemConfirm;
}

public void setMensagemConfirm(String mensagemConfirm) {
    this.mensagemConfirm = mensagemConfirm;
}
。。。
...
...
...
//测试控制器
私有字符串确认;
私有整数计数=0;
公共整数messageCount(){
返回计数++;
}
公共字符串getMensageConfirm(){
setMessageConfirm(“计数:+messageCount());
退货确认;
}
公共无效设置MensageConfirm(字符串MensageConfirm){
this.mensageconfirm=mensageconfirm;
}
例如:

  • 首先单击“确定”(

    ->确认对话框消息:计数:1(点击“否”)

  • 单击“确定”(

    ->确认对话框消息:计数:2(点击“否”)

  • 第三次单击“确定”(

    ->确认对话框消息:计数:3(点击“否”)


根据您的解释,您似乎只想在用户点击“否”后增加
计数

因此,您可以在commandButton中使用
actionListener
属性,该属性将使用ajax请求调用增量方法:

<p:commandButton value="No"  actionListener="#{testController.incrementCount()}" ajax="true" styleClass="ui-confirmdialog-no" icon="ui-icon-close"/>
控制器:

Integer count = 0;
public void incrementCount() {
   count++;
}
public Integer getCount(){
   return count;
}

这里的问题是p:confirm将不会执行服务器端代码,直到您在confirm对话框中按“yes”。因此,您必须先执行服务器端代码,并在ajax请求完成后显示确认对话框

您可以通过显示带有oncomplete属性的确认对话框来执行此操作:

    <p:commandButton value="Ok" update="conf" action="#{testController.increaseCount()}" oncomplete="PF('confirmVar').show()"/>

    <p:confirmDialog id="conf" global="true" showEffect="fade" hideEffect="fade" widgetVar="confirmVar">

        <p:commandButton value="Yes" action="#{testController.cadTest()}" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" oncomplete="PF('confirmVar').hide()"/>
        <p:commandButton value="No" styleClass="ui-confirmdialog-no" icon="ui-icon-close" oncomplete="PF('confirmVar').hide()"/>

        <f:facet name="message">
            <p:outputPanel>
                <h:outputFormat value="Count: #{testController.count}" escape="false"/>
            </p:outputPanel>
        </f:facet>
    </p:confirmDialog>

谢谢你的回答。。。但我需要在点击Ok后增加计数。。。假设我单击“否”,然后再次单击“确定”,也会有增量。那就是。。。我单击确定,下降控制器并递增,并显示在确认屏幕上。tks
    <p:commandButton value="Ok" update="conf" action="#{testController.increaseCount()}" oncomplete="PF('confirmVar').show()"/>

    <p:confirmDialog id="conf" global="true" showEffect="fade" hideEffect="fade" widgetVar="confirmVar">

        <p:commandButton value="Yes" action="#{testController.cadTest()}" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" oncomplete="PF('confirmVar').hide()"/>
        <p:commandButton value="No" styleClass="ui-confirmdialog-no" icon="ui-icon-close" oncomplete="PF('confirmVar').hide()"/>

        <f:facet name="message">
            <p:outputPanel>
                <h:outputFormat value="Count: #{testController.count}" escape="false"/>
            </p:outputPanel>
        </f:facet>
    </p:confirmDialog>
private int count;

public int getCount() {
    return count;
}

public void setCount(int count) {
    this.count = count;
}

public void increaseCount() {
   count++;
}