一开始在Creator2教程上看到从A页面传到B页面的方法,也就是比较原始的在URL的提交上做文章,其实也很好用,简单。传过去比较容易——/faces/Manager/NoticeModify.jsp?id=#{currentRow.value['notice.id']}就OK了,
B页面的接收 String nid =(String) (getExternalContext().getRequestParameterMap().get("id"); 就取到id值了,以上都还好,但是B页面提交的话,从A页面取得的id值就没了,然后就出错了。搞了我半天,在 http://blog.csdn.net/liangguanhui/archive/2007/08/03/1724629.aspx 上找到了解决方法,上面提示了两种办法。我用的是saveData() 和retyieveData()的方法:大概如下:
private void _init() throws Exception {
if(getExternalContext().getRequestParameterMap().get("id")!=null){
saveData(saveid,getExternalContext().getRequestParameterMap().get("id"));
}
noticeModifyRowSet.setDataSourceName("java:comp/env/jdbc/dataSource5");
noticeModifyRowSet.setCommand("SELECT * FROM notice where notice.id ="+retrieveData(saveid));
noticeModifyRowSet.setTableName("notice");
noticeModifyDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet)getValue("#{Manager$NoticeModify.noticeModifyRowSet}"));
}
private final static String saveid ="";
--------------
最后这样的解决,其实是早上因为DataProvider的findFirst()对id字段无效(对其他字段却有效)才这样,不知道什么原因导致的,其他人好像也有类似问题,难道是bug.