1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Listener do SelectOneMenu não funciona

Galera, to tentando chamar um evento quando ocorre a alteração no valor da combo.

O evento até que funciona, mas apenas quando eu seleciono o valor nulo. Qualquer outro valor que eu selecione ele não dispara o evento.

Segue o código abaixo:

<p:selectOneMenu id="somTipo" value="#{produtoFace.selected.tipoProduto}"
                 converter="TipoProdutoConverter" maxlength="10">
    <f:selectItem/>
    <f:selectItems value="#{produtoFace.listTipoProduto}" 
                   var="tipoProd" itemLabel="#{tipoProd.nome}" itemValue="#{tipoProd}"/>
    <p:ajax event="change" listener="#{produtoFace.verificaTipoIgualCredito}" update="txtQuantidade"/>
</p:selectOneMenu>

Bean

public void verificaTipoIgualCredito(AjaxBehaviorEvent event) {
    if (getSelected().getTipoProduto() != null) {
        if (getSelected().getTipoProduto().getNome().equalsIgnoreCase("credito")) {
            this.isCredito = true;
            this.getSelected().setQuantidade(0);
        } else {
            this.isCredito = false;
            this.getSelected().setQuantidade(null);
        }
    }
}

Converter

@FacesConverter("TipoProdutoConverter")
public class TipoProtudoConverter extends ManualCDILookup implements Converter{

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value != null && !value.trim().isEmpty()){
            ProdutoSession produtoSession = getFacadeWithJNDI(ProdutoSession.class);
            return produtoSession.getTipoProdutoById(Long.parseLong(value));
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if(value != null){
            return String.valueOf(((TipoProduto) value).getIdTipoProduto());
        }
        return "";
    }    
}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java primefaces jsf ou faça a sua própria pergunta.