JSFのdataTableで作成した一覧から選択行のデータを取得する方法をメモ。
ほとんどおまじないみたいなものですが……。
TestCBb
// 選択行データ取得
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext exContext = context.getExternalContext();
@SuppressWarnings("rawtypes")
Map map = exContext.getRequestMap();
SelectDataInfo selectData = (SelectDataInfo)map.get("m");
すこしだけxhtmlの内容にかかっているので、
xhtmlの内容も追記しておきます。
xhtml
<h:dataTable value="#{TestCBb.pageData}" var="m" styleClass="list">
<h:column headerClass="header">
<f:facet name="header">見出し1</f:facet>
<h:outputText value="#{m.value1}" />
</h:column>
<h:column headerClass="header">
<f:facet name="header">見出し2</f:facet>
<h:outputText value="#{m.value2}" />
</h:column>
<h:column headerClass="header">
<f:facet name="header">見出し3</f:facet>
<h:outputText value="#{m.value3}" />
</h:column>
</h:dataTable>
もちろんTestCBb.pageDataの型はSelectDataInfoをListにしたものです。
要するに、
SelectDataInfo selectData = (SelectDataInfo)map.get("m");
のmはdataTableで設定した名前を持ってきているというだけなんですが……。
すぐ忘れそうなのでメモ。