0

私は JSF を初めて使用します。棒グラフを表示する xhtml ページを作成しています。棒グラフの棒の 1 つをクリックしたときに、ナビゲーション ルールを使用して新しい xhtml ページにリダイレクトしたかったのです。

コードサンプル:

棒グラフ コード:

<p:layoutUnit position="south" size="350" resizable="true"
                closable="true" collapsible="true">
                <p:growl id="barChartGrowl" showDetail="true" />
                <p:barChart orientation="vertical" id="tkChart"
                    value="#{chartCreateService.categoryChartModel}"
                    legendPosition="ne" title="Human Capital Model Analysis" minY="0"
                    maxY="100" yaxisLabel="Score" style="height:300px;width:700px"
                    barMargin="50" animate="true">
                    <p:ajax event="itemSelect" listener="#{userInput.barChartClicked}"
                        update="barChartGrowl" />
                </p:barChart>
            </p:layoutUnit>

豆 :

public String barChartClicked(ItemSelectEvent event) {
        try {
            System.out.println("In Bar Chart Clicked...");
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
                    "Item selected", "Item Index: " + event.getItemIndex() + ", Series Index:" + event.getSeriesIndex());
            FacesContext.getCurrentInstance().addMessage(null, msg);
            int itemIndex = event.getItemIndex();
            int seriesIndex = event.getSeriesIndex();
            System.out.println("Item Index :"+ itemIndex);
            System.out.println("Series Index :"+ seriesIndex);
            objSummeryAttributeCharts.displaySelectedGroupResults(seriesIndex,itemIndex,objResults,objChart.getCategoryChartModel());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "showAttributeResults";
    }

Faces-config エントリ:

navigation-rule>
        <from-view-id>/pages/peerGroupAnalysis.jsf</from-view-id>
        <navigation-case>
            <from-outcome>showAttributeResults</from-outcome>
            <to-view-id>/pages/categoryResults.jsf</to-view-id>
        </navigation-case>
    </navigation-rule>

すべてが正常に機能しており、ユーザーが Bean で適切にクリックしたバーのアイテム インデックスとシリーズ インデックスを取得していますが、別のページにリダイレクトしていません。JSF または mi で何か間違ったことをしている新しいページにリダイレクトする他の方法はありますか??

助けてください...

ありがとう..

4

1 に答える 1

0

通常は ajax リクエストをナビゲートせず、通常は dom を更新します。ナビゲートする必要がある場合は、リダイレクトを使用する必要がある場合があります。

FacesContext ctx = FacesContext.getCurrentInstance();
ExternalContext extContext = ctx.getExternalContext();
String url = extContext.encodeActionURL(ctx.getApplication().getViewHandler().getActionURL(ctx, "/pages/categoryResults.jsf")); 

try {
    extContext.redirect(url);
} catch (IOException e) {
    e.printStackTrace();
}
于 2013-06-06T09:41:58.070 に答える