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

求助:新手请教JSF极其严重的问题,急!!
在一个主页面中用了frameset,分为左右两个frame。
两个frame中有各自单独的操作,对应各自的backing   bean.
这两个操作部分代码的分别如下:
左边:
<h:commandLink   action= "#{tBacker.selectNode} ">
<f:param   name= "nodid "   value= "#{tBacker.index} "> </f:param>
</h:commandLink>
右边:
<h:commandButton   id= "ima2 "   onclick= "return   checkForm(this.form) "   onmouseover= "this.src= './image/cx_4_1.gif ' "   onmouseout= "this.src= './image/cx_4.gif ' "   style= "cursor:hand "   image= "./image/cx_4.gif "   action= "#{rowDataQuery.dataQueryByButton} "/>
绑定bean如下:
<managed-bean>
<managed-bean-name> tBacker </managed-bean-name>
<managed-bean-class>
com..TBacker
</managed-bean-class>
<managed-bean-scope> session </managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name> rowDataQuery </managed-bean-name>
<managed-bean-class> com.RowDataQuery </managed-bean-class>
<managed-bean-scope> request </managed-bean-scope>
</managed-bean>

问题如下:
  当两边的操作相互进行时,第一次点击commandLink   或commandButton   时,只是页面刷新一下,而不调用这个action方法,我在两个action中打断点,根本没有进入,用h:messages也没有任何错误信息,第二次再点击就能执行方法了。
  现在这种情况没有一个固定的规律,能不能调用这个action方法都要靠“碰运气”,把commandLink   换成valuechangelistener,一边或两边都加上immediate= "true "都会有这样的情况出现。
  谁能告诉我这是什么原因?我应该怎么解决这个问题?
  这个问题要是不能解决就要放弃使用JSF了,各位高手来帮帮忙吧!解决后马上给分!

------解决方案--------------------
没用过jsf帮顶
------解决方案--------------------
帮你up
------解决方案--------------------
up
------解决方案--------------------
这是由于你所调用的方法总是在构造函数之后执行的结果,如果你将对象的范围都设在session中就不会出现这个问题了,否则还要在构造函数中加一些判断
------解决方案--------------------
这个说不准哪里有问题。好好检查一下
1。左边:
<h:commandLink action= "#{tBacker.selectNode} ">
<f:param name= "nodid " value= "#{tBacker.index} "> </f:param>
</h:commandLink>
//getIndex和setIndex都写上没有

2。 onclick= "return checkForm(this.form) "检查下这个onclick有没问题,或者去掉它测试一下action行不行。
3。检查下web.xml的jsf配置允许了js之类的没
------解决方案--------------------
selectNode方法是怎麽寫的?
加event參數了沒有??
------解决方案--------------------
h:commandLink
h:commandButton 最好不要出现在一个网页里,要么统一一下都h:commandButton
------解决方案--------------------
h:commandLink 是依靠js的
------解决方案--------------------
帮你顶一下。
------解决方案--------------------
帮你顶一下
------解决方案--------------------
tBacker.selectNode 和 rowDataQuery.dataQueryByButton

方法有问题 你看下这两个方法是否存在错误

仔细检查下



------解决方案--------------------
刚开始使用基本都会碰到这个问提,一般出现这个问题原因是两个
1.状态记录参数应该设置为客户端记录,不能设置为服务器,否则会经常不触发事件;
2.如果使用 <h:commandLink> ,就不能同时使用其action和value属性,否则会出现触发异常,如果想使用action最好用 <h:commandButton>
------解决方案--------------------