我有一个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
答案 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;
}