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 パラメータを正しく受け取りましたが、2 回目は 0 を受け取りました。両方が異なるスレッドであることを確認しました。

問題は、1 回目から 2 回目まで ID が削除されるため、ID を保存できないことです。有効な getChart 呼び出しは 2 番目であるため、2 番目に ID を受け取る必要があります。

敬具

4

0 に答える 0