内部に別のオブジェクト (ObjectB) を持つオブジェクト (ObjectA) があります。オブジェクト Bの中に がありますGuava TreeBasedTable
。このテーブルには、行キー、列キーとして文字列があり、値として別のオブジェクト "ObjectC" があります。<s:iterator/>
このテーブルはおよびタグを使用して JSP に表示され、<s:textfield/>
正しく表示されています ( 内の「値」<s:textfield/>
は正しいが、「名前」は正しくありません)。
<s:textfield/>
ここで、が変更されたときに問題が発生します。アクション クラスの ObjectC 内で変更された値を取得するにはどうすればよいでしょうか。
public class ObjectA implements Serializable {
private Integer attr1;
private List<ObjectB> objB;
//...getters and setters....
public class ObjectB implements Serializable {
private Integer attr11;
private Table<String,String,ObjectC> allPFields;
// ...getters and setters....
public class ObjectC implements Serializable {
private Integer attr111;
public String attr112;
// ...getters and setters....
jsp コード:
<!-- language: lang-html -->
<s:iterator value="#objB.allPlainFields.row(#rowKey)" var="fieldMap"
status="fieldStatus">
<li><label><s:property value="#fieldMap.key" /></label><span>
<s:textfield name="<NOT SURE>" value="%{#fieldMap.value.attr12}" />
</span></li>
</s:iterator>
TreeBasedTable
インはマップ内のGuava
マップに似ており、やってみallPFields[#outerkey][#innerkey].attr112
ましたが、うまくいきませんでした。
データベース内の既存の値で画面が表示されたときのオブジェクト構造
<!-- language: lang-java -->
objA
objBList ArrayList<E> (id=668)
elementData Object[10] (id=7438)
[0] objB (id=7439)
allPFields TreeBasedTable<R,C,V> (id=7443)
backingMap TreeMap<K,V> (id=8116)
cellSet null
columnComparator NaturalOrdering (id=503)
columnKeySet null
columnMap null
factory TreeBasedTable$Factory<C,V> (id=8117)
rowKeySet null
rowKeySet StandardRowSortedTable$RowKeySortedSet (id=8118)
rowMap StandardRowSortedTable$RowSortedMap (id=8119)
rowMap null
values null
そして、「allPFields」は実際には次のようになります。
{OuterKey1=
{InnerKey1=ObjectC[attr111=31, attr112=Hi there],
InnerKey2=ObjectC[attr111=40, attr112=How are you]
}
}
上記の「allPFields」値は、IDE コンソールから取得されたものです。