我正在使用0.7版本的bootsfaces来创建一个简单的页面,其中包含以下内容:
<h:form id="some_form">
<ui:repeat id="some_elements" var="property" value="#{someBean.properties}">
<b:commandButton value="ShowProp" ajax="true" actionListener="#{someBean.showProperty(property)}" update=":some_form:some_elements:graphic"/>
<!-- This property is true -->
<ui:fragment rendered="#{someOtherBean.showGraphic}">
<h:graphicImage url="gen_image?id=#{property.id}" id="graphic"/>
</ui:fragment>
</ui:repeat>
</h:form>
现在,我们的想法是,在点击按钮时,会更新一个属性并重新生成图像(在这种情况下是一个jfreechart图 - 但这不是重点。)我用primefaces commandButton和它测试了这个工作正常(图表被重绘..)但是使用bootsfaces commandButton,一旦ajax调用完成就没有任何反应(我可以看到服务器端的调用,但图表没有重新加载。)我认为这取决于它必须如何引用重复块中的图像,但现在确定有什么问题 - 有没有人碰到过这个?
(注意:我不想使用primefaces的原因是它与bootstrap不能很好地集成)
答案 0 :(得分:0)
我在项目的bugtracker(https://github.com/TheCoder4eu/BootsFaces-OSP/issues/135)上打开了一个错误。
实际上,为什么你期望update=":some_form:some_elements:graphic"
首先起作用?此表达式是不存在的id。标识为some_form:some_elements:0:graphic
。换句话说:它包含行号。 PrimeFaces(以及Mojarra和MyFaces)认识到命令按钮是UIRepeat组的一部分,并猜测正确的行号。但这只是猜测。显然是一个合理的猜测,因为大多数时候你想要更新命令按钮附近的东西。
BootsFaces的下一个版本也将猜测正确的行号:)。