2012-06-06 4 views
0

selectBooleanCheckbox이 아닌 경우 일 때 기본 아이디어는 selectManyCheckbox을 사용하는 것입니다. 페이지를 처음로드 할 때 selectBooleanCheckbox을 선택 취소하면 selectManyCheckbox이 비활성화되어 있기 때문에 아약스의 렌더링이 작동하지 않는 것처럼 보입니다. 무엇이 잘못되었는지를 어떻게 확인할 수 있습니까? 아니면 나는 무엇을 놓치고 있습니까?CheckBox 아약스가 실행되지 않았습니다

이것은 처음 페이지를로드 할 때 발생합니다. 버튼을 누르고 체크 박스를 재생하면 갑자기 작동하기 시작합니다.

건배,

<h:form id="formActualizacionCubo"> 
     <rich:panel id="panelActualizacionCubo" 
        style="width: 350px"> 
      <f:facet name="header"> 
       <h:outputText value="Administracion Cubo de Información PEC"/> 
      </f:facet> 

      <h:outputLabel for="selectDependenciasCubo" 
          value="Actualizar TODO el Cubo de informacion?"/> 
      <h:selectBooleanCheckbox id="selectDependenciasCubo" 
            value="#{administrationBean.actualizaTodasDependencias}"> 
       <f:ajax event="click" 
         listener="#{administrationBean.doClearCuboLabels}" 
         render="opcionesDependenciasCubo seleccionDependencias messageActualizaCubo actualizacionCuboCorrecta"/> 
      </h:selectBooleanCheckbox> 

      <a4j:outputPanel id="opcionesDependenciasCubo"> 
       <h:selectManyCheckbox id="seleccionDependencias" 
             layout="pageDirection" required="true" 
             requiredMessage="Seleccione al menos una dependencia." 
             disabled="#{administrationBean.actualizaTodasDependencias}" 
             value="#{administrationBean.dependenciasPorActualizar}"> 
        <f:selectItems value="#{administrationBean.dependenciasOpciones}"/> 
        <f:ajax event="click" 
          listener="#{administrationBean.doClearCuboLabels}" 
          render="messageActualizaCubo actualizacionCuboCorrecta"/> 
       </h:selectManyCheckbox> 
       <rich:message id="messageActualizaCubo" 
           for="seleccionDependencias"/> 
      </a4j:outputPanel> 
      <h:panelGrid columns="3"> 
       <a4j:commandButton id="btnActualizaCubo" value="Actualizar Cubo PEC" 
            render="messageActualizaCubo actualizacionCuboCorrecta @this" 
            onbegin="this.disabled=true; 
            document.getElementById('formActualizacionCubo:imgProcesandoCubo').style.display='block'" 
            oncomplete="this.disabled=false; 
            document.getElementById('formActualizacionCubo:imgProcesandoCubo').style.display='none'" 
            action="#{administrationBean.doActualizaCubo}"/> 
       <h:panelGroup/> 
       <h:graphicImage id="imgProcesandoCubo" url="img/imgLoading.gif" 
           style="display: none"/> 
      </h:panelGrid> 
      <a4j:outputPanel id="actualizacionCuboCorrecta" style="font-size: 14px; color: #D17100"> 
       <h:outputText rendered="#{administrationBean.actualizacionCuboCorrectaLabelRendered}" 
           value="Actualización correcta !"/> 
       <h:outputText rendered="#{administrationBean.actualizacionCuboFalloLabelRendered}" 
           value="Fallo la actualización !"/> 
      </a4j:outputPanel> 
     </rich:panel> 
    </h:form> 

UPDATE 그것은 잘못

후 내 백업 콩 코드는, 어쩌면 당신이 찾을 수있는 무언가

private HashMap<String, String> dependencias; 
private boolean actualizaTodoCuboChecked = true; 
private List<String> dependenciasOpciones; 
private List<String> dependenciasPorActualizar; 
private boolean actualizacionCuboCorrectaLabelRendered = false; 
private boolean actualizacionCuboFalloLabelRendered = false; 

public boolean isActualizaTodoCuboChecked() { 
    return actualizaTodoCuboChecked; 
} 

public void setActualizaTodoCuboChecked(boolean actualizaTodoCuboChecked) { 
    this.actualizaTodoCuboChecked = actualizaTodoCuboChecked; 
    dependenciasPorActualizar.clear(); 
} 

public List<String> getDependenciasOpciones() { 
    return dependenciasOpciones; 
} 

public void setDependenciasOpciones(List<String> dependenciasOpciones) { 
    this.dependenciasOpciones = dependenciasOpciones; 
} 

public List<String> getDependenciasPorActualizar() { 
    return dependenciasPorActualizar; 
} 

public void setDependenciasPorActualizar(List<String> dependenciasPorActualizar) { 
    this.dependenciasPorActualizar = dependenciasPorActualizar; 
} 

public boolean isActualizacionCuboCorrectaLabelRendered() { 
    return actualizacionCuboCorrectaLabelRendered; 
} 

public boolean isActualizacionCuboFalloLabelRendered() { 
    return actualizacionCuboFalloLabelRendered; 
} 

public void doClearCuboLabels(){ 
    actualizacionCuboCorrectaLabelRendered = false; 
    actualizacionCuboFalloLabelRendered = false; 
} 

public void doActualizaCubo() { 
    if (actualizaTodoCuboChecked) { 
     //Actualiza todas las dependencias 
     //actualizacionCuboCorrectaLabelRendered = db.actualizarCuboInformacion(dependenciasOpciones); 
    } else { 
     //Actualiza solo las dependencias seleccionadas 
     //actualizacionCuboCorrectaLabelRendered = db.actualizarCuboInformacion(dependenciasPorActualizar); 
    } 
    actualizacionCuboCorrectaLabelRendered = true; //Eliminar esta fila cuando se descomenten las llamadas en el IF-ELSE 
    actualizacionCuboFalloLabelRendered = !actualizacionCuboCorrectaLabelRendered; 
} 

private void loadDependenciesFromXML() { 
    XStream reader = new XStream(new DomDriver()); 
    reader.alias("root", Map.class); 
    dependencias = 
      (HashMap<String, String>) reader.fromXML(new File(ROOT_DIR + "/confFiles/dependencias.xml")); 
    dependenciasOpciones = new ArrayList<String>(); 
    for (String s : dependencias.keySet()) { 
     dependenciasOpciones.add(s); 
    } 
} 

답변

0

마지막 단계 모든 내 코드 단계를 확인 후 나는 두리스트가 초기화되지 않았다는 것을 깨달았다. 그래서 문제는이에서 변화 해결했다있어 :

private List<String> dependenciasOpciones; 
private List<String> dependenciasPorActualizar; 

private List<String> dependenciasOpciones = new ArrayList<String>(); 
private List<String> dependenciasPorActualizar = new ArrayList<String>(); 

후 모든 것이 완벽하게 작동합니다.

관련 문제