私は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>
selectFromRow
Bean からのメソッド
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
関数を実行すると、テーブルがレンダリングされ、テキスト ボックスに入力したデータが消去されます。