<%
List listMainBoard =(List) mapboard.get(new Integer(0));
Board mainBoard=new Board();
for(int i=0;i<listMainBoard.size();i++)
{
//循環取得主版塊
mainBoard=((Board)listMainBoard.get(i));
%>
<tr>
<td colspan="4"><%=mainBoard.getBoardName() %></td>
</tr>
<%
//子版塊
**List listSonBoard =(List)mapboard.get(new Integer(mainBoard.getBoardId()));**
//out.print(mainBoard.getBoardId()); 返回主版塊ID,即parentId 為 0
if(listSonBoard!=null){
for(int j=0;j<listSonBoard.size();j++)
{
//循環取得子版塊
Board sonBoard=(Board)listSonBoard.get(j);
//最後發表的主題
Topic topic =new Topic();
//最後發表的作者
User user=new User();
int boardId =sonBoard.getBoardId();
//取得該版塊的主題列表
List listTopic=new TopicDAO().findListTopic(1, boardId);
if(listTopic!=null&&listTopic.size()>0)
{
//取的最後發表的帖子
topic=(Topic)listTopic.get(0);
user=new UserDAO().findById(topic.getuId());
out.print("用戶:"+user.getuName());
}
%>
List listSonBoard =(List)mapboard.get(new Integer(mainBoard.getBoardId())); 這邊只保存了map的最後一組元素,前面的被覆蓋了,怎麼回事啊,求解答,謝謝
因為你是在for循環裡定義的listSonBoard,這時候每循環一次時的listSonBoard都是一個新的集合,所以之前的listSonBoard中的內容都沒了,你應該在for循環的外部定義List listSonBoard=new ArrayList();然後在for循環的時候listSonBoard.add()將新增的內容添加到集合裡面。