繁体   English   中英

Ajax不能在JSF中工作

[英]Ajax not working in JSF

我不知道为什么Ajax不能在我的JSF文件中工作。即使我的GlassFish中有一个最新的Mojarra是3.2.13。 这是我的代码

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

现在,当我运行此代码时,按钮不起作用。

另一件事,如果我改变我的代码,如删除面板,只需在条形图上渲染,如<f:ajax render="basic"/>并将其放在<form>那么它会抛出NullPointerException 因为它渲染图表并期望来自chartBean.categoryModel值。 现在AFAIK它不应该因为ajax而呈现。

我无法理解JSF中的ajax行为。 我也试过<f:ajax execute="@form" render="basic">但它也没有用。 这是怎么造成的,我该如何解决?

单击ajax按钮时,无法重新渲染页面上不存在的组件。

一个简单的解决方案是将呈现的属性从h:panelGroupp: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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM