1

私は2つの列があるdatatable場所を持っています。

列 1 : 出力テキスト。Bean データから入力されます。列 2 : 入力テキスト ボックス

commandLinkを添付したとして column1 を作成しましたactionListener。目的は、UI の行をクリックすると、選択した行データが Bean にキャプチャされることです。

コードは次のとおりです。

<h:dataTable id="headerOverrides" styleClass="header" headerClass="headerTable"
  cellpadding="0" cellspacing="0" width="100%">
        <h:column>
            <f:facet name="header">
                <h:commandLink id="payment_Fund_Name" styleClass="header"
                    actionListener="#{pc_Billing.sortColumn}"
                    onmouseover="resetTargetFrame();">
                    <h:outputText style="width:150px" 
                      value="#{bundle.billing_Fund_Name}">                                                    
                    </h:outputText>
                </h:commandLink>
           </f:facet>
        </h:column>
        <h:column>
           <f:facet name="header">
                <h:commandLink id="allocation_Percent" styleClass="header"
                    actionListener="#{pc_Billing.sortColumn}"
                    onmouseover="resetTargetFrame();">
                    <h:outputText style="width:65px" value="#{bundle.billing_Allocation_Percent}">
                    </h:outputText>
                </h:commandLink>                            
           </f:facet>
        </h:column>
</h:dataTable>
</td>
</tr>

<tr>
<td colspan="2">
    <div class="divTable" style="height: 176px" id="overrideTableData">
    <h:dataTable id="overrideTable" value="#{pc_Billing.overrideFundsList}"
                var="currentRow" columnClasses="column" headerClass="header"
                    rowClasses="#{pc_Billing.paymentRowStyles}" binding="#{pc_Billing.allocationOverrideTable}"
                    styleClass="complexTable" cellpadding="2" cellspacing="0"
                    width="100%" border="1" >


          <h:column id="override_Fund">
            <h:commandLink onmouseover="resetTargetFrame();" id="override_FundLink"
                            actionListener="#{pc_Billing.selectFromRow}" immediate="true"
                            styleClass="textTable" style="width:100%">
                     <h:outputText styleClass="textTable"
                               value="#{currentRow.fundName}" style="width:140px">
                      </h:outputText>
            </h:commandLink>
           </h:column>
           <h:column id="override_Allocation">
              <h:inputText id="allocation_Percent" styleClass="textInput" value="#{currentRow.allocation}"
                                disabled="#{!(pc_Billing.loanPayment || pc_Billing.universalLife)}" onblur="totalFrom();"
                                style="width:70px">
                  <f:convertNumber type="percent" />
              </h:inputText>
        </h:column>
    </h:dataTable>

selectFromRowBean からのメソッド

public void selectFromRow(ActionEvent e) {

        if (e.getComponent().getId().equalsIgnoreCase("override_FundLink")) {
            paymentOverrideSelectedRow = (PaymentOverride) allocationOverrideTable.getRowData();
            allocationOverrideTableData.setFundName(paymentOverrideSelectedRow.getFundName());
            allocationOverrideTableData.setAllocation(paymentOverrideSelectedRow.getAllocation());

        }else if(e.getComponent().getId().equalsIgnoreCase("fundLink"))
        {
            preimumOverrideSelectedRow = (PremiumOverride) premiumOverrideTable.getRowData();
            premiumOverrideTableData.setFundName(preimumOverrideSelectedRow.getFundName());
            premiumOverrideTableData.setAmount(preimumOverrideSelectedRow.getAmount());
            premiumOverrideTableData.setEndDate(preimumOverrideSelectedRow.getEndDate());
            premiumOverrideTableData.setInterestRate(preimumOverrideSelectedRow.interestRate);
        }

    FacesContext.getCurrentInstance().renderResponse();
    }

今起こっていることは、テーブルの入力テキスト ボックスからデータを取得していないことです。それはヌルです。私は何が欠けていますか?また、selectFromRow関数を実行すると、テーブルがレンダリングされ、テキスト ボックスに入力したデータが消去されます。

4

1 に答える 1

1

ここからimmediate="true"を削除しようとしましたか?

<h:commandLink onmouseover="resetTargetFrame();" id="override_FundLink"
               actionListener="#{pc_Billing.selectFromRow}" immediate="true"
               styleClass="textTable" style="width:100%">

inputTextの値を処理する前に、selectFromRowメソッドを実行するようになると思います。

于 2013-01-02T19:16:10.300 に答える