0

JSFファイルでAjaxが機能しない理由がわかりません。GlassFishに3.2.13の最新のMojarraがあります。これが私のコードです

<h:head></h:head>
<h:body>
    <h:panelGroup id="panel" rendered="#{chartBean.showCharts}">

            <p:barChart id="basic" value="#{chartBean.categoryModel}"
            legendPosition="ne" title="Basic Bar Chart" min="0" max="200"
            style="height:300px" />

    </h:panelGroup>

    <h:commandButton value="Display Chart" action="#{chartBean.createCategoryModel}">
    <f:ajax render="panel"/>
    </h:commandButton>
</h:body>

このコードを実行すると、ボタンが機能しません。

もう1つ、パネルの削除のようにコードを変更し、棒グラフのようにレンダリングして <f:ajax render="basic"/>配置すると<form> 、がスローされNullPointerExceptionます。チャートをレンダリングし、からの値を期待するためchartBean.categoryModelです。AFAIKは、ajaxのためにレンダリングされるべきではありません。

JSFでのajaxの動作を理解できません。私も試し<f:ajax execute="@form" render="basic">ましたが、うまくいきませんでした。これはどのように発生し、どうすれば解決できますか?

4

1 に答える 1

2

ajaxボタンをクリックしたときに、ページにないコンポーネントを再レンダリングすることはできません。

簡単な解決策は、レンダリングされた属性をからに移動することh:panelGroupですp:barChart。その後、panelGroupは常にレンダリングされ、JSFはajaxリクエスト中にそれを見つけます。

<h:panelGroup id="panel">

        <p:barChart rendered="#{chartBean.showCharts}"
                    id="basic" value="#{chartBean.categoryModel}"
                    legendPosition="ne" title="Basic Bar Chart" min="0" max="200"
                    style="height:300px" />
</h:panelGroup>

<h:commandButton value="Display Chart" action="#{chartBean.createCategoryModel}">
<f:ajax render="panel"/>
</h:commandButton>
于 2012-10-19T06:08:59.200 に答える