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