jsf primefaces 进度条在操作方法运行时更新值

2023-12-03

我的 JSF 页面底部有一个提交按钮,它将所有输入(文本、文件等)提交到数据库和服务器。由于此操作需要持续时间,我想向用户显示操作的进度,并在完成后将他重定向到完成站点。

我的豆看起来像:

<h:form enctype="multipart/form-data">
    <p:commandButton widgetVar="submitButton" value="Save to DB" action="#{bean.submit}" onclick="PF('submitButton').disable();" />
    <p:progressBar widgetVar="pbAjax" ajax="true" value="#{bean.saveProgress}" interval="1000" labelTemplate="{value}%" styleClass="animated" />            
</h:form>

和我的代码:

private int saveProgress;

public String submit(){
    for(int i = 0; i < 100; i++){ //dummy values
        //DB operations
        //file uploads
        saveProgress = i;
        System.out.println("Progress: " + saveProgress);
    }

    return "finished.xhtml";
}

//getter for saveProgress

问题是,完成后进度条和页面都不会导航到finished.xhtml。

我在这里做错了什么?这是一个线程问题吗(因为提交不是线程安全的?) 我怎么解决这个问题?


这个解决方案(使用异步)是一个黑客,但它有效:

<p:commandButton id="executeButton" action="#{myBean.longOperation}"
    async="true" process="@form" value="start import"
    onclick="progress.start()" global="false" />

<br />

<p:progressBar ajax="true" widgetVar="progress" value="#{myBean.progress}"
    labelTemplate="{value}%" styleClass="animated" global="false" />

<br />

<p:outputPanel id="result" autoUpdate="true">
    <h:outputText value="#{myBean.message}" />
</p:outputPanel>

用这种豆子

@ManagedBean
@ViewScoped
public class MyBean implements Serializable
{
    private static final long serialVersionUID = 1L;

    private double progress = 0d;
    private String message = "ready";

    public String longOperation() throws InstantiationException, IllegalAccessException
    {
        for(int i = 0; i < 100; i++)
        {
            // simulate a heavy operation
            progress++;
            message = "processing [" + i + "]";
            Thread.sleep(1000);
        }

        message = "completed";

        return "result";
    }

    public double getProgress()
    {
        return progress;
    }

    public void setProgress(double progress)
    {
        this.progress = progress;
    }

    public String getMessage()
    {
        return message;
    }

    public void setMessage(String message)
    {
        this.message = message;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jsf primefaces 进度条在操作方法运行时更新值 的相关文章

随机推荐

  • .NET 高效生成 WORD 文档的方法 - 服务器端

    NET 4 0 我正在寻找在我们的服务器上生成 Word 文档的最简单方法 限制 服务器端 我不想在服务器上安装 word 数据源是XML 我尝试使用 XSLT 生成 DOCX 这种方法既快速又简单 但验证生成的文档的唯一方法是使用 Wor
  • 如何在 android studio 中检查 ImageView 是否已完成加载和图像

    我正在尝试使用 Glide 加载一些 大约 50 个 带有 URL 数组中的图像的 ImageView 但加载似乎很慢 我认为这是因为它试图一次加载所有图像 如何检查图像是否已从 ImageView 中的 URL 加载完成 只有在加载前 4
  • 比较当前和以前的实体[重复]

    这个问题在这里已经有答案了 我正在使用 Spring Data 和 hibernate 我想比较新值 但作为方法参数传递的对象与我从数据库获取的对象相同 我为我的实体创建了一个侦听器 EntityListeners MyListener c
  • 确定所有 CSV 列的最小值和最大值

    我需要找到 CSV 中所有列的最小值和最大值 并将这些值用于网页中的滑块 最初 我确定 CSV 文件中的总列数 并根据总列数创建许多滑块 如亚马逊的价格滑块 这是用于创建滑块的代码段 在上面的代码中 数据滑块范围指定为 1 500 但是 我
  • 在多个worker之间共享python对象

    我们使用 FastAPI 创建了一个服务 当我们的服务启动时 它会创建一些 python 对象 然后端点使用这些对象来存储或检索数据 生产中的 FastAPI 从多个工作人员开始 我们的问题是每个工人创建自己的对象而不是共享一个对象 下面的
  • Dart 获取下周五的日期

    我正在尝试制作一个应用程序来倒计时直到下周五 但因此我需要下周五的日期 非常感谢任何帮助 Solution extension DateTimeExtension on DateTime DateTime next int day retu
  • 忽略 PostgreSQL 触发之前的结果?

    该主题是该主题的一部分挑战thread我正在为 BEFORE TRIGGER 的一部分寻找更好的解决方案 我只想启动一个触发器来转换为正确的括号 我在想我是否应该从触发器返回 NULL 或者在触发器之前返回其他内容 Code CREATE
  • VBA快速插入多条记录到Access DB

    好的 我有一个电子表格 可以生成相当大量的记录 3500 我有以下脚本将它们插入到我的访问数据库中 Sub putinDB Dim Cn As ADODB Connection Rs As ADODB Recordset Dim MyCon
  • Tensorflow.strided_slice 缺少参数“strides”?

    我正在尝试跑步cifar10 train py根据教程 但我得到了 cifar10 input py line 87 in read cifar10 tf strided slice record bytes 0 label bytes t
  • 缺少安装 OpenCV HighGUI

    我在安装 OpenCV 时遇到一些问题 我使用了此处提供的 2 3 1 windows superpack http opencv willowgarage com wiki 我将其解压到 C OpenCV 并使用 CMake 将其构建到
  • 用汇编语言弹出 CD/光驱

    这再简单不过了 但并没有改变 我有一个简单的代码 用于查看光驱是否会弹出 该代码采用汇编语言 intel nasm 语法 BITS 16 ORG 0X07C00 STI Eject mov ah 46h mov al 00h mov dl
  • 读取 FASTA 文件

    我想将文件的以下行转换为 JSON 我想将其保存到猫鼬模式中 gt HWI ST700660 96 2 1101 1455 2154 5 0 1 GAA GAATG 应该 gt HWI ST700660 96 2 1101 1455 215
  • 使用 htaccess 重定向目录,但不重定向其中的文件

    在我的网站上 我有一个目录 folder 其中包含一些图像和 html 我想重定向尝试访问的用户http domain com folder to http domain com 但不希望对该目录中的文件的请求重定向到http domain
  • 如何将箱线图保存为变量?

    如何将箱线图保存为 R 中的变量 例如 如果我这样做 plot lt boxplot count spray data InsectSprays col lightgray 当我调用绘图时 我希望它显示箱形图 这样我不需要每次都运行绘制箱形
  • 将发件人电子邮件更改为 Woocommerce 中的客户账单电子邮件

    我需要将订单电子邮件发件人更改为客户电子邮件 功能更改返回电子邮件为 public function get from address from address apply filters woocommerce email from ad
  • 更改 URL 映射 -Javamelody

    我在用着爪哇旋律在我的应用程序中 我只需要 root 用户来访问统计信息 Javamelody 默认情况下您可以访问 http localhost webapp monitoring 我需要将其更改为 http localhost weba
  • StreamReader 太贪心了

    我正在尝试处理文本文件的一部分 并使用将文本文件的其余部分写入云 blobUploadFromStream 问题在于 StreamReader 似乎从底层流中获取了太多内容 因此后续写入不执行任何操作 文本文件 3 Col1 String
  • 如何设置 Web 挂钩来检查 DocuSign Envelope 状态?

    我编写了使用信封请求客户端签名的代码 如本教程所示 https www docusign com developer center recipes request a signature via email using a template
  • 在汇编中反转字符串时遇到问题

    我正在尝试反转汇编中的字符串 但是我的代码似乎无法正常工作 我添加了换行符以提高可读性 我使用 linux 和 nasm 作为编译器 我认为如果我获取地址指针的值并将它们切换到正确的位置 字符串最终会被反转 然后恢复正常 这是我的代码 se
  • jsf primefaces 进度条在操作方法运行时更新值

    我的 JSF 页面底部有一个提交按钮 它将所有输入 文本 文件等 提交到数据库和服务器 由于此操作需要持续时间 我想向用户显示操作的进度 并在完成后将他重定向到完成站点 我的豆看起来像