sf中rich:dataTable中的h:commandlink提交无效问题

http://forhope.iteye.com/blog/859714

<a4j:keepAlive beanName="***Action" ajaxOnly="true"/>

此时把h:commandLink替换成a4j:commandLink即可

 

Java代码 

由于jsf的重构组件时保持状态的原理,造成commandlink未提交。  

解决办法:在页面中加入:  

<t:saveState value="#{后台bean.datatablelist}"/>  

或者把后台bean名的范围改为session  

<a4j:keepAlive beanName="***Action" ajaxOnly="true"/>  

此时把h:commandLink替换成a4j:commandLink即可  

或者在web.xmljavax.faces.STATE_SAVING_METHOD设置为client 

 

由于jsf的重构组件时保持状态的原理,造成commandlink未提交。

解决办法:在页面中加入:

<t:saveState value="#{后台bean.datatablelist}"/>

或者把后台bean名的范围改为session

<a4j:keepAlive beanName="***Action" ajaxOnly="true"/>

此时把h:commandLink替换成a4j:commandLink即可

或者在web.xmljavax.faces.STATE_SAVING_METHOD设置为client

 

 

参考:dataTablesAction listeneraction命令没有被调用?

     如果action(h:commandLink,h:commandButton)没有被提供,那么Action Listenersactions就不会被激活。当action源在dataTable上时,并且dataTablevalue属性指向一个请求范围的数据源,那么action源在接下来的请求中就没有被提供,例如:

  Java代码 

<h:dataTable value="#{requestScopedBean.dataModel.wrappedData}" />   

         <h:column>    

    <h:commandLink value="click here" action="#{backingBean.willNotFire}" />    

        </h:column>   

 </h:dataTable> 

 

   <h:dataTable value="#{requestScopedBean.dataModel.wrappedData}" />

            <h:column> 

       <h:commandLink value="click here" action="#{backingBean.willNotFire}" /> 

           </h:column>

    </h:dataTable>

     action源没有被rendered,是因为数据源在随后的请求中不存在了(在第一次响应完成后,被垃圾回收器进行了回收)

     为了解决这个问题,使用t:saveState标记或者将request范围的bean放在session范围内:

Java代码 

<t:saveState value="#{myRequestScopedBean.dataModel.wrappedData}" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值