首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有h:selectBooleanCheckbox的JSF2 AJAX问题

带有h:selectBooleanCheckbox的JSF2 AJAX问题
EN

Stack Overflow用户
提问于 2014-06-13 10:10:27
回答 1查看 2.6K关注 0票数 0

版本:

RichFaces 4.3.5

Apache MyFaces 2.1

发行:

如下面的代码所示,我面临着在h:selectBoolenCheckbox的一个列中使用的以下问题

1)当多个复选框被一个接一个地选中时,点击之间有相当大的延迟,就没有问题了。复选框被单击。

2)但是,当不加延迟地单击复选框时,并不是所有的复选框都被选中。如果两个复选框被选中得非常快,那么只有第一个复选框被选中。在调试此问题后,发现第二个请求不会调用所需对象的setter方法,只将其值保持为false。

我的问题是:

1)为什么第二个请求不调用对象的setter方法?是因为第一次请求处理还没有完成吗?

2)如何解决这一问题?我试过使用immediate="true",但没有成功。可以选择使用java脚本。但是,当选中复选框时,涉及到复杂的逻辑,一些复选框将根据当前选中复选框的值自动选择和禁用。

此逻辑在app.value getter方法中处理。

代码:

清单1:

代码语言:javascript
运行
复制
<h:panelGroup id ="panel">
  <rich:dataTable id="apps" value="#{bean.apps}" var="app">

       <!-- other columns not shown --> 

    <h:column>
        <h:selectBooleanCheckbox id="admin" disabled="#{app.disabled}" value="#{app.value}">
            <a4j:ajax event="click" execute="@this" render="panel">
                        </a4j:ajax> 
        </h:selectBooleanCheckbox>
    </h:column>             


  </rich:dataTable>
</<h:panelGroup>

编辑1:添加app.getValue的伪代码:

代码语言:javascript
运行
复制
public boolean getValue(){

    if(check other instance variable value){
        this.setValue(true);    
    }

} 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 11:45:22

我可以通过以下技巧来解决这个问题。单击复选框后,将调用后端方法,但在ajax请求完成后不会重新呈现页面。这将节省成功地通过第二个请求的时间。在不需要对复选框进行重新呈现的情况下,可以这样做。

下面是起作用的代码。

代码语言:javascript
运行
复制
 <h:column>
        <!-- don't reRender -->
        <h:selectBooleanCheckbox id="admin" disabled="#{app.disabled}" value="#{app.value}"
         rendered="#{not app.reRender}">
            <a4j:ajax event="click" execute="@this">
                        </a4j:ajax> 
        </h:selectBooleanCheckbox>

         <!-- reRender -->
         <h:selectBooleanCheckbox id="admin" disabled="#{app.disabled}" value="{app.value}"
        rendered="#{app.reRender}">
            <a4j:ajax event="click" execute="@this" render="panel">
                        </a4j:ajax> 
        </h:selectBooleanCheckbox>
    </h:column>   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24202882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档