【问题标题】:Check the data via a function of the bean, and if the function returns false, bring up a dialog to decide how to proceed通过 bean 的函数检查数据,如果函数返回 false,则弹出一个对话框来决定如何进行
【发布时间】:2015-04-22 11:53:57
【问题描述】:

该页面有一个数据输入表单。单击命令按钮将数据输入到数据库中。

我需要定义一种通过bean的函数来控制数据的方法,如果这个数据已经在数据库中(例如:控制这个的bean的函数返回false),弹出一个对话框选择是否覆盖数据或取消操作(应始终通过 bean 方法执行覆盖)。

我该如何处理?我使用 JSF 和 Primefaces。

编辑:

我已尝试使用 RequestContext,但没有出现对话框。对话框是这样的:

<p:commandButton id="tasto" value="Insert"
                action="#{bean.prova()}" update="BankGrid errorbank" ajax="false" />
            <p:dialog id="dialog" header="Title" widgetVar="dlg" resizable="false">
                <h:panelGrid>
                    <h:outputLabel value="Wanna do?" />
                    <p:commandButton id="button" value="YES"
                        action="#{bean.insertExist()}" ajax="false" />
                    <p:commandButton value="NO"
                        action="back.xhtml?faces-redirect=true" />"
                 </h:panelGrid>
            </p:dialog>

都在一个form里面,函数是这样的:

public void prova(){
    RequestContext context = RequestContext.getCurrentInstance();
    context.execute("PF('dlg').show();");

}

怎么了?

【问题讨论】:

  • 出了什么问题?:您没有使用 ajax 并希望在页面完全刷新后显示一个对话框。这仅在您使用 ajax 时有效(您可以看到 ij pf 展示,因为这样的示例在 ajax 示例组中是(afaik)。所以切换到使用 ajax 并且它可以工作
  • 没有标志 ajax 它可以工作。谢谢
  • 以后,请立即发布stackoverflow.com/help/mcve,特别是如果您的行为与默认设置不同。

标签: jsf primefaces dialog managed-bean


【解决方案1】:

取决于您提交表单的方式。

如果您通过 ajax 提交表单,请使用 RequestContext#execute() 在完成 ajax 提交时以编程方式执行脚本:

所以,给定一个

<p:dialog ... widgetVar="fooDialog">

您可以通过以下方式以编程方式打开它:

if (someCondition) {
    RequestContext.getCurrentInstance().execute("PF('fooDialog').show()");
}

或者,如果您正在同步提交表单(即您出于某种原因使用ajax="false"),则使用visible 属性:

<p:dialog ... visible="#{bean.someCondition}">

【讨论】:

  • 为此我需要创建一个导航器吗? (或创建 faces-config.xml)?我试过了,还是不行
  • 如上所述,它只适用于非 ajax 请求@balusc:你能在答案中添加这个吗?我试图提出一个小的修改,但它仍然说答案改变了很多
  • @balusc:Dank... BillB:请接受答案,以便其他人搜索类似的东西,很明显有一个有效且正确的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2019-11-23
  • 1970-01-01
  • 2022-08-17
  • 2019-12-17
  • 2020-03-04
相关资源
最近更新 更多