在JSF页面中显示动态生成的图像

时间:2014-03-19 15:46:03

标签: jsf-2 jfreechart

我有一个JSF页面需要显示位于web文件夹中的动态生成的图像(使用jfreeChart)。加载页面时,它将显示先前生成的图像而不是新图像。图像标记如下所示;

<h:graphicImage id="polarity" url="image.png" rendered="#{tweetController.renderedValue}/>

我的图像渲染方法(这是在页面加载时调用的);

public void DisplayChart(Coreconf conf)
{
    this.conference = conf;
    GenerateImage();
    renderedValue = true;
}

控制器类有一个创建图像的方法,并且在加载页面时都会调用它们。问题是,在执行create new image方法之前加载图像。有什么建议吗?

谢谢, Tharaka

1 个答案:

答案 0 :(得分:1)

最后,我找到了解决方案。尽管创建动态图像和渲染h:graphicImage标记同时被执行,但创建图像比渲染图像标记花费的时间更多。因此,图像标签呈现旧图像。在图像渲染中添加Thread睡眠修复了这个问题。

public void DisplayChart(Coreconf conf)
{
    this.conference = conf;
    GenerateImage();
    try {
        Thread.sleep(2000);
    } catch (InterruptedException ex) {
        Logger.getLogger(TweetController.class.getName()).log(Level.SEVERE, null, ex);
    }

    renderedValue = true;
}