日期:2014-05-18  浏览次数:20811 次

求助,jsf关于commandlink和datatable的两个问题,请高人指点。
1.在jsf框架下,使用commandlink标签调用一个java类的方法,在java方法里查询数据库,返回的结果是List。把这个结果存放到request里,代码如下:
Map   map   =   FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
map.put( "CostumerList ",   costumerList);
,在下一个页面中如何使用大提datatable把数据显示页面。我的写法如下
<t:dataTable   id= "CostumerList "   var= "CostumerEntity "  
value= "#{CostumerList} "   >
<t:column>
<f:facet   name= "header ">
<h:outputText   value= "会员编号 "   />
</f:facet>
<h:outputText   value= "#{CostumerEntity.costumerid} "   escape= "true "   />
</t:column>
<t:column>
<f:facet   name= "header ">
<h:outputText   value= "姓名 "   />
</f:facet>
<h:outputText   value= "#{CostumerEntity.name} "   escape= "true "   />
</t:column>
<t:column>
<f:facet   name= "header ">
<h:outputText   value= "性别 "   />
</f:facet>
<h:outputText   value= "#{CostumerEntity.sex} "   escape= "true "   />
</t:column>
<t:column>
<f:facet   name= "header ">
<h:outputText   value= "级别 "   />
</f:facet>
<h:outputText   value= "#{CostumerEntity.member_level} "   escape= "true "   />
</t:column>
<t:column>
<f:facet   name= "header ">
<h:outputText   value= "移动电话 "   />
</f:facet>
<h:outputText   value= "#{CostumerEntity.mobile} "   escape= "true "   />
</t:column>
</t:dataTable>
现在画面不显示也不报错。
2.如何能让上面方法打开的页面在令一个target里显示。

------解决方案--------------------
你处理的方式不对,以下仅提供思路:
如你你两个页面和一个managedbean,分别为a.jsf,b.jsf和mbean.
1.a.jsf是你查询条件的页面并有一个commandLink,用于提交,代码大致如下:
<h:commandLink id= "link " value= "确定 " action= "#{mbean.query} "> 如果要提交到新页面请使用以下方法: <h:commandLink id= "link " value= "确定 " action= "#{mbean.query} " target= "_blank ">

2.建立managedbean mbean,范围为request即可。在Bean里至少有public String query()方法,返回值为b.jsf的映射字符串,并且有一个属性List costumerList及它的get方法。

3.在你的query方法里查询数据库,返回的结果是List
4.b.jsf代码就是显示代码了,大致如下:
<t:dataTable id= "CostumerList " var= "CostumerEntity "
value= "#{mbean.costumerList} " >
<t:column>
<f:facet name= "header ">
<h:outputText value= "会员编号 " />
</f:facet>
<h:outputText value= "#{CostumerEntity.costumerid} " escape= "true " />
</t:column>
...........
..........
</t:dataTable>
ok了!!!!!
------解决方案--------------------
ap map = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
map.put( "CostumerList ", costumerList);
,在下一个页面中如何使用大提datatable把数据显示页面。我的写法如下
------------------------
request表示的是当前请求,但你换到下1个页面的时候就是1个新的请求了,所以你保存到以前请求中的值,不可能在下1个请求中还能取的到。保存到se