Предыдущий штрих-код отображается при попытке отобразить динамически сгенерированные штрих-коды

Когда я генерирую штрих-код динамически, он всегда печатает предыдущий ввод, а не последний код. Когда я обновляю страницу кнопкой обновления в браузере, отображается правильный штрих-код. Но если я обновлю страницу с помощью кнопки команды JSF, результат все равно будет прежним. Где я ошибся?

Последние обновления JSF 2.1 Primefaces 4.0 Barbecue 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. Динамический StreamContent Ответ от BalusC

2. Динамический штрих-код с простыми лицами

1 ответ

Задавать cache=false на графическом изображении.

Другие вопросы по тегам