2014-09-02 6 views
0

У меня есть кнопка. Если это нажата, должен быть сделан флажок.
Это, конечно, работает очень хорошо. Флажок должен, при изменении вызова функции, который должен только System.out.println() что-то, поэтому я вижу, что это называется.
Проблема: просто простая функция checkbox, без рендеринга работает очень хорошо. Но как только a4j:support перезагружен, он не работает, System.out.println() никогда не называетсяa4j: поддержка в reRender не работает

Это выглядит так просто, но я не знаю, почему он вообще не работает!
Любые подсказки/подсказки?

Это старая среда, поэтому только JSF 1.2.

Мой XHTML

 <s:div id="sdBoolCheckboxtest"> 
     #{testController.testRerenderBool} 
      <s:div id="sdRerender" rendered="#{testController.testRerenderBool}"> 
       <h:selectBooleanCheckbox id="myscheckbox" value="#{testController.testBool}"> 
        <a4j:support ajaxSingle="true" event="onclick" immediate="true" 
         status="globalStatus" action="#{testController.testCheckbox()}" /> 
       </h:selectBooleanCheckbox> 
      </s:div> 
     </s:div> 
    </h:form> 

Мой класс Java:

@Name("testController") 
@AutoCreate 
public class TestController { 

    private boolean testBool = false; 

    public boolean isTestRerenderBool() { 
     return testRerenderBool; 
    } 

    public void setTestRerenderBool(boolean testRerenderBool) { 
     this.testRerenderBool = testRerenderBool; 
    } 

    private boolean testRerenderBool; 

    public void switchtestRerenderBool(){ 
     System.out.println("switch"); 
     testRerenderBool = !testRerenderBool;  
    } 

    public void testCheckbox(){ 
     System.out.println("drin"); 
    } 

    public boolean isTestBool() { 
     return testBool; 
    } 

    public void setTestBool(boolean testBool) { 
     this.testBool = testBool; 
    } 
} 

ответ

0

Хорошо, я получил это работает, с этими изменениями:

Сначала я добавил @Scope(ScopeType.CONVERSATION) к TestController

@Name("testController") 
@AutoCreate 
@Scope(ScopeType.CONVERSATION) 
public class TestController { 
... 
} 

И как второе изменение, я изменил <s:div к <a4j:outputPanel

<a4j:outputPanel id="sdBoolCheckboxtest"> 

Это решить мою проблему, но я до сих пор удивляюсь, почему мне нужен @Scope(ScopeType.CONVERSATION) (я нашел подсказку с a4j : outputPanel here)

Любое объяснение было бы полезно, спасибо!

Смежные вопросы