当我从XHTML调用JSF bean时,调用两次

时间:2013-07-02 09:22:50

标签: java jsf primefaces javabeans

我是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调用是第二个。

亲切的问候

0 个答案:

没有答案