我是JSF的新手。我正在使用Primefaces,我想用Primefaces创建一个动态图形。我通过上下文中的URL传递参数。在XHTML中,我有这段代码
<p:graphicImage id="linear" value="#{imageController.chart}">
<f:event type="preRenderView" listener="#{imageController.loadChart}" />
</p:graphicImage>
在bean中我把代码放在构造函数,loadChart和@PostConstruct方法中读取web字符串参数,总是得到相同的结果:
private StreamedContent chart;
private Integer id = 0;
public ImageController () {
System.out.println("ImageController constructor");
createImgModel();
}
private void createImgModel() {
//Chart
try {
//Get the Id
System.out.println("ImageController.createModel");
Map<String, String> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
if(requestMap.containsKey("id")){
id = Integer.parseInt(requestMap.get("id"));
}
System.out.println("ImageController.id: " + id);
...
}
第一次调用此方法时,我正确地收到了Id param,但第二次收到了0.我检查了两个是不同的线程。
问题是我无法存储id,因为它从第一次到第二次删除。我需要在第二个接收id,因为de有效的getChart调用是第二个。
亲切的问候