bootsfaces b:ui中的commandButton:重复不更新h:graphicImage

时间:2015-07-17 19:25:49

标签: jsf bootsfaces

我正在使用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不能很好地集成)

1 个答案:

答案 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的下一个版本也将猜测正确的行号:)。