求助:新手请教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>
------解决方案--------------------
web.xml
<!--JSF的基础配置 -->
<listener>
<listener-class> com.sun.faces.config.ConfigureListener </listener-class>
</listener>
<context-param>
<param-name> javax.faces.STATE_SAVING_METHOD </param-name>
<param-value> client </param-value>
</context-param>
[解决办法]
你不理解jsp运行机制,他们有个优先级别,bean 的get方法优先级别最高,当那些方法运行完毕后,才是你的commandLink 和commandButton 上的actionListener帮定的方法,有可能你在第一不就取不到值,所以的你事件就不执行,或偶尔执行(获取到程序运行的条件值)