jsf - 尝试显示动态生成的条形码时显示上一个条形码

标签 jsf primefaces barbecue

当我动态生成条形码时,它总是打印以前的输入,而不是最新的代码。当我使用浏览器上的刷新按钮刷新页面时,会显示正确的条形码。但是如果我使用 JSF 命令按钮刷新页面,仍然是之前的结果。我哪里出错了?

JSF 2.1 Primefaces 4.0 烧烤1.5测试版 Chrome/Firefox 最新更新

<p:graphicImage value="#{barcodeController.createBarcodeByCode(patientController.current.code)}" 
                style="max-width: 7.5cm; padding: 10px; margin: 10px;" >
</p:graphicImage>

这来自具有请求范围的 JSF Controller 。

public StreamedContent createBarcodeByCode(String code) {
    FacesContext context = FacesContext.getCurrentInstance();
    if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
        // So, we're rendering the view. Return a stub StreamedContent so that it will generate right URL.
        return new DefaultStreamedContent();
    } else {
        barcode = null;
        System.out.println("code = " + code);
        if (code == null || code.trim().equals("")) {
            return null;
        }
        File barcodeFile = new File(code);
        try {
            BarcodeImageHandler.saveJPEG(BarcodeFactory.createCode128C(code), barcodeFile);
            barcode = new DefaultStreamedContent(new FileInputStream(barcodeFile), "image/jpeg");
        } catch (Exception ex) {
            System.out.println("ex = " + ex.getMessage());
        }

        return barcode;
    }
}

引用文献:

1. Dynamic StreamContent Answer by BalusC

2. Dynamic Barcode with Primefaces

最佳答案

p:graphicImage上设置cache="false"

关于jsf - 尝试显示动态生成的条形码时显示上一个条形码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25226733/

相关文章:

coldfusion - 为什么 Barbecue Barcode 库生成的图像与其他 Barcode 生成器不同?

java - SelectOneMenu 似乎改变了支持 bean 列表中的值

java - 无法将字符串转换为长

java - 如何从后面的代码中打印浏览器上呈现的 JSP 页面

java - 动态编辑属性文件

css - Primefaces imageSwitch 宽度和高度样式

ajax - 每个ajax请求都会调用preRenderView

html - html页面保留字符串样式

java - 如何调整 Barbecue API 生成的文本的大小?