[Seasar-user:14151] [Teeda] ArrayListの項目1個の値が0になる。
Yuu Koseki
[E-MAIL ADDRESS DELETED]
2008年 5月 14日 (水) 13:17:44 JST
いつもお世話になります。
小関と申します。
PAGEファイルに宣言されたArrayList変数値がDBfluteで値を取ってきた直後には
値がちゃんと入ってるのに (Prerenderの時)その後doボタンを押下すと
値が部分なくなります。(正確に言えば0になります。)
自分なりに調査して見ても解決できなくて投稿します。
本ページファイルのMainPage.javaの
public void prerender() {
getData();
}
public void getData(){
AmountCB amountCB=new AmountCB();
amountCB.query().addOrderBy_Orderid_Desc();
dbItems = amountBhv.selectList(amountCB);
dataItems = samDxo.ListConvert(dbItems);
System.out.println("getData "+dataItems.get(2).getOrderid());
//ここには.getOrderid()に値が2と正しく入っています。
}
でもその後doUpdate()メソッドを実行したら
public Class doUpdate(){
System.out.println("doUpdate" + dataItems.get(2).getOrderid());
//getOrderid()は0が入ってる。
//データベースには2が格納されてれるし、consoleに2が出力されるはずなのに。)
System.out.println("getDetail" + dataItems.get(2).getDetail());
//ちゃんと'おはよう'と値が入ってる。
return UpdatePage.class;
}
因みにdataItems , dbItemsは
public ArrayList<ListDto> dataItems;
public ListResultBean<Amount> dbItems;
と宣言されています。
ListDtoは
private String subjectcode;
private String detail;
private int amount;
private String plus;
private String minus;
private int orderid;
private boolean chk;
とgetter/setterが宣言されている普通のDtoです。
でもprerender時ちゃんと値が各項目に入ってるのに
その後何も特別処理がないまま単純にdoUpdateボタンを
押したらdoUpdateメソッドの中にorderid値だけがなくなっています。
なくなつているより0になっています。(nullではない。)
MainPage.javaの宣言部には
public String subjectcode;
public String detail;
public String orderid;
public int amount;
public String plus;
public String minus;
public boolean chk;
とちゃんと普通に宣言されています。
<table border="1">
<div id="dataItems">
<tr align="center">
<td width="22"><input type="checkbox" id="chk" readonly="0"/></td>
<td width="60"><input type="text" id="subjectcode" size="7" readonly="1"/></td>
<td width="140"><input type="text" id="detail" size="25" readonly="1"/></td>
<td width="60"><input type="text" id="amount" size="8" readonly="1"/></td>
<td width="60" ><input type="text" id="plus" size="1" readonly="1" /></td>
<td width="60" ><input type="text" id="minus" size="1" readonly="1"/></td>
<input type="hidden" id="orderid"/>
</tr>
</div>
</table>
と宣言されています。
<input type="hidden" id="orderid"/>の部分は
元々ありませんでしたが、今の問題が起きた時解決のために
入力した部分です。(でもそれで解消出来ませんでした。)
doUpdateボタンは
<input type="button" value="Update" id="doUpdate"></input>
とコーディングされています。
この現象の原因と解決方を御存じの方はお答えお願いします。
Seasar-user メーリングリストの案内