commandButton primefaces só executa método do bean quando está sozinho dentro do form

Caros Web Desenvolvedores

Estou com o seguinte problema: quando utilizo apenas o componente <p:commandButton/> dentro de um <h:form> o método no bean é executado, porém quando utilizo outros componentes primafaces juntamente com o <p:commandButton/> dentro do <h:form> o método do bean não é executado, como no exemplo abaixo:

funcionando

[code]<h:form>
<p:commandButton update=“selects” value=“Adicionar Item de Kit” icon=“ui-icon-disk” styleClass=“BtCorpoPainel” actionListener="#{kitSalvarBean.adicionarItem}"/>

</h:form>
[/code]
Sem funcionar

[code]<h:form>








Produto<p:autoComplete id=“pesquisaProduto” value="#{kitSalvarBean.produtoSelecionado}" minQueryLength=“3” required=“true"
var=“p” itemLabel=”#{p.nome}" itemValue="#{p}" forceSelection=“true"
completeMethod=”#{kitSalvarBean.completarProduto}" converter=“produtoConverter"
requiredMessage=“Selecione um produto” />
Quantidade Produto<h:inputText value=”#{kitSalvarBean.quantidadeProduto}" required=“true” requiredMessage=“Informe a quantidade”/>
            <p:commandButton update="selects" value="Adicionar Item de Kit" icon="ui-icon-disk" styleClass="BtCorpoPainel" actionListener="#{kitSalvarBean.adicionarItem}"/>
            <ui:repeat id="selects" var="i" value="#{kitSalvarBean.itens}">
                <div>
                    <h:outputText value="#{i.produto.referencia}" >

                    </h:outputText>

                    <h:outputText value="#{i.produto.nome}">
                    </h:outputText>

                    <h:outputText value="#{i.quantidade}">

                    </h:outputText>

                </div>
            </ui:repeat>
            <table >
                <tr>
                    <td>Nome<h:inputText value="#{kitSalvarBean.kit.nome}" required="true" requiredMessage="Informe o nome do kit"/></td>
                </tr>
                <tr>
                    <td>Tag<h:inputText value="#{kitSalvarBean.kit.tag}" required="true" requiredMessage="Informe a tag do kit"/></td>
                </tr>
                <tr>
                    <td>Desconto<h:inputText value="#{kitSalvarBean.kit.desconto}" required="true" requiredMessage="Informe o desconto do kit"/></td>
                </tr>
            </table>

        </h:form>[/code]

Bean

[code]package br.com.bean.kit;

@ManagedBean
@RequestScoped
public class KitSalvarBean implements Serializable {

private Kit kit;
private Produto produtoSelecionado;
private HashMap<Integer, ProdutoKit> itens;
private KitRN kitRN;
private int quantidadeProduto;

/**
 * Creates a new instance of KitSalvarBean
 */
public KitSalvarBean() {
    kit = new Kit();
    itens = new HashMap<Integer, ProdutoKit>();
}

public String salvar() {
    kitRN = new KitRN();
    try {
        kit.setProdutoKitList((List<ProdutoKit>) itens.values());
        kitRN.salvar(kit);
        Util.getInstance().setarMsgBundle("cadastrokit", FacesMessage.SEVERITY_INFO);
    } catch (ApplicationException ex) {
        Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Exceção de Negócio", ex);
        Util.getInstance().setarMsgBundle(ex.getMensagem(), FacesMessage.SEVERITY_INFO);
    }

    return Navegacao.KITPRODUTO.getEndereco();
}

public List<Produto> completarProduto(String pesquisa) {
    kitRN = new KitRN();
    return kitRN.produtoAutoComplete(pesquisa);

}

public Kit getKit() {
    return kit;
}

public void setKit(Kit kit) {
    this.kit = kit;
}

public String carregarCadastroKit() {
    return Navegacao.KITPRODUTONOVO.getEndereco();
}

public List<ProdutoKit> getItens() {
    return new ArrayList<ProdutoKit>(itens.values());
}

public Produto getProdutoSelecionado() {
    return produtoSelecionado;
}

public void setProdutoSelecionado(Produto produtoSelecionado) {
    this.produtoSelecionado = produtoSelecionado;
}


public void adicionarItem() {
    ProdutoKit produtoKit = new ProdutoKit();
    Produto produto;
    int quantidade;
    if (produtoSelecionado != null) {
        if (itens.get(produtoSelecionado.getCodigo()) != null) { //produto ja adicionado
            produtoKit = itens.get(produtoSelecionado.getCodigo());
            quantidade = produtoKit.getQuantidade();
            produtoKit.setQuantidade(quantidade + quantidadeProduto);
        } else {
            produto = new Produto();
            produto.setCodigo(produtoSelecionado.getCodigo());
            produtoKit.setQuantidade(quantidadeProduto);
            produtoKit.setProduto(produto);
            itens.put(produtoSelecionado.getCodigo(), produtoKit);
            produtoSelecionado = new Produto();
        }
    }

}

public int getQuantidadeProduto() {
    return quantidadeProduto;
}

public void setQuantidadeProduto(int quantidadeProduto) {
    this.quantidadeProduto = quantidadeProduto;
}

}[/code]

Desculpe se já existir um tópico semelhante.

Versões da tecnologia
Jsf 2.1, primefaces 3.2, toncat 7.027

Seu ManagedBean é do tipo Request, porém, você seleciona um produto no autoComplete, depois insere a quantidade do produto, e depois manda adicionar o produto.
Imagino que quando manda adicionar, seu produto e a quantidade já não existam mais no ManagedBean.

Chegou a colocar um breakpoint no seu método adicionarItem para ver o que acontece nele?
Gera algum erro?

Dependendo do que acontecer, pode mudar seu ManagedBean para ViewScoped ou SessionScoped, dependendo do tempo que precisa desses objetos.

Cheguei a debugar o código, mas ele não chama o método se conter outros componentes dentro do form. Tb cheguei a testar com view scope e nada. Gostaria de usar o button via ajax para adicionar os itens.