在一个主页面中用了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了,各位高手来帮帮忙吧!解决后马上给分!
两个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了,各位高手来帮帮忙吧!解决后马上给分!
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之类的没
getIndex和setIndex都写上了,这个没有问题。
可以进入onclick事件,但是还是不能执行action。
‘允许了js之类’是什么意思啊?另外,点击commandLink 或commandButton,执行完action中的操作后,所在的页面会刷新一次。问题是不是与这有关啊?
加event參數了沒有??
h:commandButton 最好不要出现在一个网页里,要么统一一下都h:commandButton
1.状态记录参数应该设置为客户端记录,不能设置为服务器,否则会经常不触发事件;
2.如果使用<h:commandLink>,就不能同时使用其action和value属性,否则会出现触发异常,如果想使用action最好用<h:commandButton>
<!--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>