一次和jsf的接触 JSFSeamrichfaceswicketSwing
程序员文章站
2022-07-15 16:34:47
...
同事看了richfaces,觉得很漂亮,决定来一次学习研究.要搞jsf,当然要收集资料啦.开动,加上两年前接触过一会jsf,一下子就收集了下面如此之多的链接:
jsf
stand1.1doc
stand1.2Doc
question
china-resource
2.自己做个crud怎样呢?好吧,动手:
首先需求:
商店,买菜的商店
1.商品列表,翻页
2.编辑商品
3.咕咚咕咚的就把商品列表做出来了,
期间遇到一些不适应症状:
翻页:以前的操作是客户端指定了页码,然后传给服务器;现在变成用一个隐藏变量放置当前页码,然后Page提供了first,next,prev,last四个方法,作为command action被调用,而Page()回调注入的PageAble接口来填充数据.
一个最郁闷的问题是:h:datatable里面包括CommandLink的时候,CommandLink会失效.发现要使用SessionBean才能正常,或者这个调用方法总是返回相同的数据.就像The J2EE(TM) 1.4 Tutorial 的bookstore跟seam的booking例子那样(做例子也不模拟得实际点,搞得我花了半天才找到问题).
咕咚咕咚的又跑去下了The J2EE(TM) 1.4 Tutorial的教程的boostore来看,意犹未尽之下,又去下载seam的booking例子来看.运行之后,发现好神气.譬如seam在一个表格的一行用 <s:link action="#{hotelBooking.selectHotel(hot)}" value="View Hotel" id="viewHotel">,
@Begin
public void selectHotel(Hotel selectedHotel)
{
hotel = em.merge(selectedHotel);
}
调试状态下看看,神气啊, selectedHotel居然就是用来显示那一行的hotel对象.一模一样.发现原来是state to session在起作用,.
但是想想觉得这个开销不小.要把列表的数据都丢session里.当然咯,环境允许的话这样用来肯定爽.
4.</s:link>用<s:link action="#{hotelBooking.selectHotel(hot)}" value="View Hotel" id="viewHotel">tomcat,sun提供的参考实现需要指定
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
5.参考实现跟myfaces使用request bean的运行结果有些不同.貌似myfaces支持save state to client,这样有些特性默认就有了.
最后得到的结论如果不用session bean,真不知道怎么用好jsf.这个问题如果能很好解决,感觉挺好的.?
</s:link>