0

我是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 参数,但第二次我收到了 0。我检查了两者是不同的线程。

问题是我无法存储 id,因为它从第一次到第二次都被删除了。我需要在第二个中接收 id,因为有效的 getChart 调用是第二个。

亲切的问候

4

0 回答 0