f:setPropertyActionListener无法正常工作

时间:2011-06-28 09:02:28

标签: jsf java-ee richfaces

我正在使用richfaces数据表。

要编辑rich:datatable,我使用了以下行

<a4j:commandLink 
    styleClass="no-decor" 
    reRender="machineDisplayTable"
    value="edit"
    oncomplete="#{rich:component('editMyMachinePanel')}.show()">
    <f:setPropertyActionListener
        target="#{machineTable.myMachineToEdit}"
        value="#{Machine}"/>
</a4j:commandLink>

其中“machineDisplayTable”是datatable的id,“editMyMachinePanel”很丰富:modalpanel,“machineTable”是bean类,“myMachineToEdit”是类型机器的类。

现在,在rich:modelpanel中,我正在打印“machineTable.myMachineToEdit.hostname”,我什么都没得到。 modelpanel的代码为:

<rich:modalPanel id="editMyMachinePanel" autosized="true">
    <f:facet name="header">
        <h:outputText value="#{machineTable.myMachineToEdit.hostname}" />
    </f:facet>
    <a4j:commandButton value="Cancel" onclick="#{rich:component('editMyMachinePanel')}.hide(); return false;" />
</rich:modalPanel>

似乎第一个面板正在渲染,然后通过f:setPropertyActionListener将值赋给machineTable.myMachineToEdit。

无论如何,我可以先分配machineTable.myMachineToEdit,然后再渲染modalpanel。

两个imp网站,关于相同的是:

http://richfaces-showcase.appspot.com/richfaces/component-sample.jsf?demo=dataTable&sample=dataTableEdit&skin=blueSky

http://binamebou.be/phoenix-framework/wiki/index.php5?title=Richfaces_FAQ

第二个链接(设置操作)中提供了一个解决方案,但在我的情况下也不起作用。

1 个答案:

答案 0 :(得分:3)

在您的情况下,您应该在按a4j:commandLink时重新调整面板。不是表格。

重新呈现= “editMyMachinePanel”