[Seasar-user:16542] JavaScriptで行追加するSubapplicationScopeのxxxItemsでレイアウトファイルを使用したとき

浅野護 [E-MAIL ADDRESS DELETED]
2008年 12月 23日 (火) 17:36:50 JST


浅野と申します。お世話になります。

JavaScriptで行追加するxxxItemsで、SubapplicationScopeに指定している場合ですが、単体のHTMLでは行追加がxxxItemsのサイズに反映されるのですが、レイアウトHTMLを適用すると追加行が反映されなくなってしまいました。
以下にサンプルソースを記述しますが、どこがおかしいか分かりますでしょうか?

環境は
Seasar2:2.4.33
Teeda:1.0.13(sp4)
になります。

よろしくお願いいたします。


------------------(サンプル START)----------------------------
【メインのHTML】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:te="
http://www.seasar.org/teeda/extension" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<script type="text/javascript" src="jquery-1.2.6.js"></script>
<script type="text/javascript">
function addRow() {
var rowStr = '<tr>';
rowStr += '<td><span id="rowno"></span></td>';
rowStr += '<td><input id="userId" type="text" /></td>';
rowStr += '<td><input type="hidden" id="rowno-1" /></td>';
rowStr += '</tr>';
$('#userItems').append(rowStr);
 // 明細のINDEXを振り直す
resetIndex();
}

// 明細のINDEXを振り直す
function resetIndex(){
var nameVal = 'form:userItems:';
$('#userItems tr').each(function(idx, obj){
// 行番号を振り直す
$(obj).find('#rowno').text('' + (idx + 1));
// name属性のindexを振りなおす
$(obj).find('#rowno').attr('name', nameVal + idx + ':rowno');
$(obj).find('#userId').attr('name', nameVal + idx + ':userId');
$(obj).find('#rowno-1').attr('name', nameVal + idx + ':rowno-1');
});
}
</script>
</head>
<body>
<span id="allMessages"/>
<form id="form">
<table>
<thead>
<th>ユーザID</th>
</thead>
<tbody id="userItems">
<tr>
<td><span id="rowno"></span></td>
<td><input id="userId" type="text" value="" /></td>
<input type="hidden" id="rowno-1"/>
</tr>
</tbody>
</table>
<input type="button" onclick="addRow()" value="ADD ROW"/>
<input type="button" id="doTest" value="TEST"/>
</form>
</body>
</html>


【レイアウトHTML】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:te="
http://www.seasar.org/teeda/extension" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<title>レイアウト</title>
</head>
<body>
<te:includeChildBody id="includeChildBody"/>
</body>
</html>


【Pageクラス】
package sample.web.common;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.seasar.teeda.extension.annotation.scope.SubapplicationScope;
import sample.dto.UserDto;

public class IndexPage {
@SubapplicationScope
public List<UserDto> userItems;
public int userIndex;
public String rowno;
public String userId;
// public Class getLayout() {
// return null;
// }

public Class doTest() {
System.out.println("doTest  size=" + userItems.size());
return null;
}

public Class initialize() {
Date today = new Date();
userItems = new ArrayList<UserDto>();
UserDto user1 = new UserDto();
user1.timesp = new Timestamp(today.getTime());
user1.rowno = "1";
user1.userId = "A001";
user1.userName = "USER A";
userItems.add(user1);
UserDto user2 = new UserDto();
user2.timesp = new Timestamp(today.getTime());
user2.rowno = "2";
user2.userId = "B001";
user2.userName = "USER B";
userItems.add(user2);
return null;
}

public Class prerender() {
return null;
}
}


【xxxItemsで使用しているDTO】
package sample.dto;

import java.io.Serializable;
import java.sql.Timestamp;

public class UserDto implements Serializable {

private static final long serialVersionUID = 1L;
 public Timestamp timesp;
public String rowno;
public String userId;
public String userName;

}

------------------(サンプル END)----------------------------
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20081223/40eb9822/attachment-0001.html>


Seasar-user メーリングリストの案内