1)seam的并发概述 Servlet和EJB规范都没有定义任何关于如何管理来自同一个客户端的并发请求的条款。 Servlet容器简单地让所有的线程并发运行,把线程隔离的任务交给应用程序代码。 EJB容器允许无状态组件并发访问,但如果并发访问一个有状态Session Bean,就会抛出一个异常。 旧式的Web应用程序是围绕细粒度的同步请求编写的,因此这种行为可能还OK。 但是对现代的程序而言,由于大量使用了很多细粒度的异步(AJAX)请求,并发是实际存在的,并且必须被程序模型支持。 Seam在其上下文模型中加入了并发管理层。 Seam Session 和应用上下文是多线程的。Seam ...
这几天在做一个数据导入的功能,方法执行需要10个小时以上,当运行一会后就报session超时(我用的是seam中的对话)。但又不能将全部session timeout设置为过大,查看session方法里有 void setMaxInactiveInterval(int secondinterval) 方法,可以设置当前session的超时时间,这样长时间运行方法就不会超时了,其他的session还是配置的超时时间。void setMaxInactiveInterval(int secondinterval) 参数单位:秒
1)login logout 同一浏览器窗口不能多次登录,要想重新登录或者更换另外用户登录,必须先将当前用户logout后才能登录,即登录后必须logout才能再次登录 if (isLoggedIn(false) && isCredentialsSet())         {            if (Events.exists()) Events.instance().raise ...
1)seam中的异常可以支持ejb异常javax.ejb.ApplicationException,所以当seam的项目在tomcat上运行时需要ejb的包,仅仅需要ejb包,而不是非跑在ejb服务器上。
各种jsf框架提供了相同功能的不同组件实现,他们都解决了某些问题,却又增添了新的问题,必须深刻理解才能在不同的场景下正确的使用不同的组件。 h:commandButton 可以提交表单,但不能传递参数 h:commandLink 可以提交表单,又能传递参数,但是以链接的形式展现   a:commandButton a:commandLink 都可以传递参数,但只能局部刷新页面 <a:actionparam value="0" assignTo="#{contract_search.firstResult}"/>   s:button s: ...
前段时间在测试a4j时发现不能在el中传递参数,比如<a:support event="onclick" actionListener="#{checkeableList.selectAll('hotels')}" 是不行的,页面编译都不过,当时就认为是a标签的问题,而在seam中却是可以的,比如<s:link  value="View Hotel" action="#{hotelBooking.selectHotel(wrap.data)}"/>,认为是seam标签对el进行了扩展。最近一网友说<a:support event="onclick" actio ...
  • 13:34
  • 浏览 (237)
  • 评论 (0)
  • 分类: jsf
  • 发布在 JSF 圈子
问题描述: 目前我所实验过的h:selectOneMenu的每个f:selectItem如果被选中,当表单提交后h:selectOneMenu就有值了,即使选中的f:selectItem 的itemDisabled="true"也照样会被提交,这样就不是我们想要的了,比如我们的下拉项中的第一个是“---请选择--”,这表明我们还没有选择,那么提交后选择框是不应该有值的。 解决办法: 在该值的set方法中判断,如果是“--请选择--”选项对应的值就不直接放回,这样它的值就还是null,相当与没有选择任何选项。 <h:selectOne ...
  • 17:48
  • 浏览 (304)
  • 评论 (2)
  • 分类: jsf
  • 发布在 JSF 圈子
基于seam的datatable全选解决方案 目前的table只支持单行操作和全部行操作,而不支持多选操作,比如每行号前有个复选框,用于批量删除。 通常做法 通常的做法是改写值对象,或者改写值对象的基类,在其中增加checked属性 ------------------------------------------------ public abstract class BaseObject implements Serializable { private boolean checked; public void setChecked(boolean value) { this.ch ...
分页有两种情况,一种是将数据一次全部读取,然后再内存中分页;另一种是每次只获取一页的内容。这两种情况都应当在系统中用到,但他们对应的情况不同。一次全部读取的适用于小数据量,比如一个订单下的全部订单明细;而分页查询的情况适用于顶层对象的不同查询条件下的列表,比如全部订单列表。 内存分页 由标准分页组件来实现,比如rich:datascroller,它的明显优点是和要分页的内容是分离的。   这种情况特别适用于hibernate、jpa等支持的实体的列表属性,比如一个订单的全部订单明细,当我们获取一个订单时,其实它的全部明细已经被获取(可能是延迟加载), 然后由分页组件来分页显示 ...
1)应用自己写的类的@name不要与seam框架的内建组件名称相同,可以通过在seam源码中搜索你要给@name的名字,如果能搜索到就用换用另外的名子了。 我就碰到过和内建名子相同的一次,老是出错, @name("theme")与内建的皮肤组件相同 2)datatable和repeat等循环组件中的循环变量的名字不要与自定义类的@name和内建组件的@name相同,一般尽量简短些,比如<h:dateTable value="#{booklist}" var="book">,如果table循环的Book实体的@name也是book,就会出些莫名起码的错误. .......... ...
yourenyouyu2008
搜索本博客
最近加入圈子
存档
最新评论