2014-10-29 2 views
0

정말 간단 할 무언가를하려고 노력했지만 아직 작동하지 않습니다.JSF 업데이트 p : selectOneMenu from another p : selectOneListbox with Ajax

두 번째 항목이 첫 번째 항목에서 선택한 항목에 따라 다르도록 2 개의 "p : selectOneMenu"가 있습니다. 그들은 둘 다 bean에 항목을 나열하는 고유 한 메소드를 가지고 있습니다.

내가 원했던 것은 첫 번째 값이 변경되었을 때 였고, 다른 요소를 업데이트하여 선택한 개체를 고려하여 목록을 다시로드해야합니다. 그러나 아약스는 결코 발생하지 않습니다. 적어도 디버그에서는 Bean의 메소드가 다시 호출되지 않습니다.

무엇이 잘못 되었나요? 코드는 다음과 같습니다.

감사합니다 !!!

<p:ajax update="localizacaoPorLotacao" event="change"/> 

답변

1

가 발견 : :)

<p:selectOneMenu value="#{itemBean.lotacao}"> 
    <f:selectItem itemLabel="Choose one" /> 
    <f:selectItems value="#{itemBean.listLotacoes()}" 
     var="lotacao" 
     itemLabel="#{lotacao.format()}" /> 
    <p:ajax update="localizacaoPorLotacao" /> 
</p:selectOneMenu> 

<p:selectOneMenu id="localizacaoPorLotacao" 
    value="#{itemBean.localizacao}"> 
    <f:selectItem itemLabel="Choose one" /> 
    <f:selectItems value="#{itemBean.listByLotacao(itemBean.lotacao)}" /> 
</p:selectOneMenu> 

@ManagedBean 
@SessionScoped 
public class ItemBean { 

    // attributes, getters and setters here... 

    public List<Lotacao> listLotacoes() { 
     LotacaoService lotacaoService = new LotacaoService(); 
     List<Lotacao> lotacoes = lotacaoService.getAll();  
     return lotacoes; 
    } 

    public List<Lotacao> listByLotacao(Lotacao lotacao) { 
     if (lotacao == null) { 
      return new ArrayList<Lotacao>(); 
     } 

     String prefixo = lotacao.getCodigo().substring(0, 1); 
     LotacaoService lotacaoService = new LotacaoService(); 
     List<Lotacao> lotacoes = lotacaoService.getByPrefix(prefixo); 

     return lotacoes; 
    } 

} 
0

은 아마 당신은 이벤트를 필요로한다!

클래스에 대한 변환기가 없으므로 JSF가 setter를 트리거하지 않습니다. 변환기를 만들고 OneMenu에 추가 한 후 코드가 제대로 작동했습니다.

최종 버전은 다음과 같습니다

<p:selectOneMenu value="#{itemQuadroVagasBean.lotacao}" 
    converter="orgaoLotacaoCodigoConverter"> 
    <p:ajax event="change" 
     update="localizacaoPorLotacao" />  
    <f:selectItem itemLabel="Selecione a lotação" /> 
    <f:selectItems value="#{itemQuadroVagasBean.listarLotacoes()}" 
     var="lotacao" 
     itemLabel="#{lotacao.formatarLocalizacao()}" />                
</p:selectOneMenu> 
+0

추가는데 아무런 동작도하지 않습니다. : –

+0

@Rafael Simonelli # {itemBean.lotacao}에 대해 # – Multisync

+0

라파엘 시모 넬리 (LaPaelSimonelli) 라 불리는 구성 요소를 넣었습니까? – BackSlash

관련 문제