0

我是 JSF 的新手。我正在构建一个 xhtml 页面,在其中显示条形图。当我单击条形图的一个栏时,我想使用导航规则将其重定向到新的 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";
    }

面孔配置条目:

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 回答