我正在使用primefaces-4.0并且得到一个非常奇怪的行为。
有一组布局layoutMateriaMB.listaLayouts
,我在其上迭代创建一个p:dataGrid
,其中每列代表一个布局,该列的f:setPropertyActionListener
在Bean中设置所选布局。第一列工作正常,单击时调用layoutMateriaMB
中的setLayout方法,但是,所有其他列都不起作用。刚刚没有调用set方法,我无法理解为什么会发生这种情况。
以下是我的代码:
<p:dataGrid var="layout" value="#{layoutMateriaMB.listaLayouts}" columns="5" rows="1" paginator="false">
<p:column>
<p:panel header="#{layout.valor}" style="text-align:center">
<h:panelGrid columns="1" style="width:100%">
<h:graphicImage library="imagens/layouts" name="#{layout.imagem}" width="100" />
<p:commandLink update=":form:grid-layout" oncomplete="" title="Selecionar" rendered="#{layoutMateriaMB.layout ne layout}">
<h:outputText value="Selecionar" title="Selecionar" />
<f:setPropertyActionListener value="#{layout}" target="#{layoutMateriaMB.layout}" immediate="true"/>
</p:commandLink>
<h:outputText value="Selecionado" title="Selecionado" rendered="#{layoutMateriaMB.layout eq layout}" style="color:#313964; font-weight:bold;"/>
</h:panelGrid>
</p:panel>
</p:column>
</p:dataGrid>
好的,我解决了这个问题。将rows="1"
更改为rows="5"
就是这么简单。
这解决了问题,所有项目都正常工作。但我仍然不明白为什么它不起作用。如果有人知道,请告诉我.. :)