尝试显示动态生成的条形码时,会显示以前的条形码

时间:2014-08-10 08:06:31

标签: jsf primefaces barbecue

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

JSF 2.1 Primefaces 4.0 烧烤1.5 beta Chrome / Firefox最新更新

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

这是来自JSF控制器的请求范围。

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

1 个答案:

答案 0 :(得分:3)

在graphicImage上设置cache=false