Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 valuechangelistener被多次调用_Jsf 2_Weblogic12c_Icefaces 3 - Fatal编程技术网

Jsf 2 valuechangelistener被多次调用

Jsf 2 valuechangelistener被多次调用,jsf-2,weblogic12c,icefaces-3,Jsf 2,Weblogic12c,Icefaces 3,我正在致力于icefaces从1.8升级到3.3,以及jsf从1.2升级到2.0 我将此链接用作icefaces的参考 我使用的是ice:datatable,其中有一列复选框,它是为单个工作者分组的 问题1: 现在,迁移后面临的问题是,ice的valuechangelistener:selectbooleancheckbox在我选中然后取消选中单个工作程序的复选框时工作正常。但当我执行以下步骤时: 选中第一个辅助对象(这将更新指定的门列) 然后检查其他工人。这将取消选中以前选中的工作线程,也将取

我正在致力于icefaces从1.8升级到3.3,以及jsf从1.2升级到2.0

我将此链接用作icefaces的参考

我使用的是ice:datatable,其中有一列复选框,它是为单个工作者分组的

问题1: 现在,迁移后面临的问题是,ice的valuechangelistener:selectbooleancheckbox在我选中然后取消选中单个工作程序的复选框时工作正常。但当我执行以下步骤时:

  • 选中第一个辅助对象(这将更新指定的门列)
  • 然后检查其他工人。这将取消选中以前选中的工作线程,也将取消选中当前选中的工作线程
  • 为了分析第一阶段是否存在任何问题,我使用balus C博客检查了icefaces在点击valuechangelistner时的阶段。然后我在第二次检查中发现,调用了2个或多个valuechangelistner,一个用于前一个worker,另一个用于当前worker(有时两次),所有这些都发生在相同的调用应用程序阶段

    问题2: 即使单击“确定”按钮或“取消”,也会调用ValueChangeListener。 通过在ice:commandButton中添加f:param并在valuechangelistener方法中检查param修复了此问题

    尝试:

  • 将页面中的所有ice标记更改为ace标记(与datatable相关,即datable、row和column)
  • 结果:ace valuechangelistener也存在同样的问题,并且风格扭曲。可能是因为我在ace标签中找不到与ice:rowHeader等效的标签,还有更多

  • 仅将复选框列更改为ace:列。Valuechangelistener工作正常,但“groupOn”属性存在问题,因此将其更改为“groupBy”,而condition=“group”可能仍然不起作用,因为我使用了不支持它的ice:datatable

  • 然后我尝试手动实现groupOn功能。对单个辅助对象使用行范围和渲染单个复选框。但是rowspan没有起作用。另外,当我尝试渲染复选框时,它的样式与我需要的不完全相同。检查这个hattp://postimg.org/image/ih2mgoh7d/ 从“hattp”中删除“a”

     <ace:column groupBy ="#{item.workerName} + #{item.workerId}" rowspan="2" 
                            styleClass= "alignSBChbx" >
                            <ice:setEventPhase events="ValueChangeEvent"
                                       phase="INVOKE_APPLICATION">
                            <ice:selectBooleanCheckbox id="dwaCheckbox"  value="#{item.select}" 
                           style=" width:'#{appViewSettings.checkboxSize}';
                            height:'#{appViewSettings.checkboxSize}';" 
                            valueChangeListener="#{dockWorkerAssignmentBean.doorAssignmentChange}" 
                            partialSubmit="true" immediate="true" 
                            disabled="#{!empty dockWorkerAssignmentBean.errorMap['dockWorkersAssignmentPopup:assignmentErrorField']}"
                            rendered="#{item.visible}">
                            <f:attribute name="workerIdSelected" value="#{item.workerId}" />
                            <f:attribute name="assignmentIdSelected" value="#{item.assignmentId}" />
                            </ice:selectBooleanCheckbox>
    
                            </ice:setEventPhase>
                            </ace:column>
    
    
    
    
    
    
      backend
      public final void doorAssignmentChange(final ValueChangeEvent event) {
    System.out.println("inside door Assignment...");
    
    
      final String workerIdSelected = (String) event.getComponent().getAttributes().get(
            "workerIdSelected");
     // unrelevant code
    
     }
    
    
    后端
    公共最终作废门转让变更(最终值变更事件){
    System.out.println(“内部分配…”);
    最终字符串workerIdSelected=(字符串)事件。getComponent().getAttributes().get(
    “工人当选”);
    //非相关码
    }
    
    }


  • 要排除一个和另一个,您是否将数据表组件绑定到会话范围的bean?如果是这样,请尝试删除它并重新测试。不,我没有绑定数据意味着没有显式绑定。但是是的,它的bean在faces配置的会话范围内。我应该把它放在哪个范围内?或者完全移除它?谢谢你的回复,谢谢你迟来的回复。我试着用另一种方式处理它。好的,我尝试删除bean的作用域,但由于请求作用域,在填充数据时遇到了一些其他问题。那对我不起作用。我正在尝试创建具有请求作用域的新bean,然后调用会话作用域bean的valuechangelistener,不传递valuechangelistener事件,而是从事件传递jst基本参数。无论如何,我已经设法创建了groupon的功能,使用模型中几个额外变量的render和更改,使用ice:datatable和ace:column。