如何在rich:dataTable中编辑单行

时间:2014-02-20 09:29:04

标签: modal-dialog richfaces panel

我必须使用富面4和模态面板编辑表格中的行。我是新人,所以请详细告诉我,我知道要制作富有表情的桌子。我已经搜索了很多东西,但没有得到任何富有成果的

1 个答案:

答案 0 :(得分:0)

请参阅answer了解问题“Richfaces:在popup [commandbutton,action和popupPanel]中显示详细信息”。它适用于RichFaces 4.x和rowClick。

或者这是commandLink的示例:

    <a4j:commandLink action="#{actionBean.setupTransactionDetails}"
        event="onclick" render="transactionDetails"
        oncomplete="#{rich:component('transactionDetails')}.show()"
        styleClass="rich-link">
        <h:outputText value="#{res.transactionType}" />
            <f:setPropertyActionListener value="#{res.transactionId}"
                target="#{profile.transactionId}" />
    </a4j:commandLink>

但我更喜欢这样的更新版本:

    <a4j:jsFunction name="showDetail" action="#{actionBean.setupTransactionDetails}"
    oncomplete="#{rich:component('transactionDetails')}.show();"
    render="transactionDetails">
        <a4j:param name="id" assignTo="#{profile.transactionId}"
            converter="javax.faces.Long" />
    </a4j:jsFunction>

    <rich:dataTable id="txnTable" rows="#{referenceData.recordsPerPage}"
    style="width: 100%" rowClasses="oddrow, evenrow"
    value="#{profile.transactions}" var="res" sortMode="single">
        <h:column width="110">
            <f:facet name="header">
                <h:outputText value="#{msg.transactionType}" />
            </f:facet>
            <a4j:commandLink onclick="showDetail('#{res.transactionId}');"
                value="#{res.transactionType}" />
        </h:column>
    </rich:dataTable>

    <rich:popupPanel id="transactionDetails" autosized="true"
        style="max-height:600px;">
        <!-- f:facet name="header" and f:facet name="controls" here -->
        <h:form id="transactionDetailsForm">
            <!-- some details here -->
        </h:form>
    </rich:popupPanel>

配置文件支持bean

private Long transactionId; // + getter and setter

动作支持bean

    public void setupTransactionDetails() {
        Transaction txn = DAO.getInstance().get(Transaction.class, getProfile().getTransactionId());
        transactionForm.setup(txn);
    }

如果使用EL 2.2(或更高版本),可以使用参数调用action bean方法。