在我的Web应用程序中,我正在尝试创建一个简单的页面,其中有一个输入,一个命令按钮,一个面板和一个pieChart(内部面板)。面板开始不渲染(有一个MB和一个布尔att“canShowPanel”,它开始为false)。当用户单击commandButton时,将调用一个方法(actionListener)并将canShowPanel设置为true,并更新面板。所有工作(面板和pieChart都被渲染)但是,当用户点击pieChart切片时,不会触发事件(itemSelect)。我测试了启动canShowPanel的真值(即所有都在开始时显示),所有的工作都包括事件。
总结:如果未在开始时呈现pieChart,则在呈现之后不会触发事件。那是正常的行为吗?我的代码如下,但可以使用primefaces演示进行测试。只将pieChart放在一个面板(outputPanel,panel ...)中并在之后进行渲染。有用信息:饼图以MB填充
PS。在PrimeFaces 3.6-SNAPSHOT和Mojarra 2.1.7上运行(SNAPSHOT 20120206)(以及...... apache tomcat 7 ...)
<h:form>
<h:inputText value="#{logosUserViewMB.question}" tabindex="0" />
<p:commandButton icon="ui-icon-search" ajax="true" global="true"
actionListener="#{logosUserViewMB.doSearch()}"
update=":resultContainer">
</p:commandButton>
</h:form>
<p:outputPanel id="resultContainer">
<h:form prependId="false">
<p:outputPanel id="chartContainer" rendered="#{logosUserViewMB.canShowPanel}">
<p:pieChart id="pieChart" lazy="true"
value="#{logosUserViewMB.questionResultView.pieModel}"
legendPosition="w" title="No tit yet"
style="width:400px;height:300px;border:none">
<p:ajax event="itemSelect" listener="#{logosUserViewMB.itemSelect}" global="true"/>
</p:pieChart>
</p:outputPanel>
</h:form>