Olá pessoal, este é meu primeiro tópico no forum GUJ!
Estou me aventurando em java de alguns dias para cá, com o JSF 2.0 + Hibernate + GlassFish e Hibernate, utilizando o NetBeans 7.1.
Criei algumas entidades de view’s já existentes no meu banco de dados, estou fazendo um CRUD Simples de um carrinho de compras aonde Terei um cabecalho(neste cabeçalho tenho um tipo de transação associado) e as linhas do pedido (aonde tenho associado a classe linha duas classes: produto e contabilização). montei o carrinho de vendas e aparentemente está funcionando, fiz uma página aonde eu seleciono os itens e adiciono no carrinho, uma segunda página aonde é feita a edição da Quantidade desejada e uma página final aonde existe somente o botão SALVAR. a lógica para criar a classe cabeçalho está dentro do acionListener deste Botão.
Após o processamento a aplicação deveria redirecionar para a página index.jsf.
Porem o p:commandButton do primefaces quando só executa corretamente na segunda tentativa(inclusive grava as informações no BD corretamente
)
Tenho a impressão que na primeira vez que pressiono o bottão , é feito update da tela porem os métodos não são chamados pelo actionlistener e action do p:commandButton.
troquei pelo h:commandButton e funcionou.
só não posso deixar como h:commandButton porque nesta tela irei inserir alguns campos que serão atualizados por este p:commandButton(quando chegar neste ponto não haverá redirecionamento para o index.jsf"
ó grandes Sabios do GUJ , me mostrem uma luz no fim do túnel, que não seja o trem !!!
abaixo está o dito cujo.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/facelets"
>
<h:head>
<title>CABECALHO</title>
</h:head>
<h:body>
<br></br>
<h:form id="SALVAR">
<p:commandButton value="Criar Movimentação"
actionListener="#{trxHeaderMB.salvarHeader(event)}"
action="#{trxHeaderMB.salvarHeader()}"
>
</p:commandButton>
</h:form>
</h:body>
</html>
e o ManagedBean
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.edgar.trxdiversaestoque.controller;
import br.com.edgar.trxdiversaestoque.dao.TipoTransacaoDao;
import br.com.edgar.trxdiversaestoque.dao.TipoTransacaoDaoImpl;
import br.com.edgar.trxdiversaestoque.dao.TrxHeaderDao;
import br.com.edgar.trxdiversaestoque.dao.TrxHeaderDaoImpl;
import br.com.edgar.trxdiversaestoque.model.TipoTransacao;
import br.com.edgar.trxdiversaestoque.model.TrxHeader;
import br.com.edgar.trxdiversaestoque.model.TrxLine;
import javax.inject.Named;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import javax.enterprise.inject.Any;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.inject.Inject;
/**
*
* @author EDG
*/
@ManagedBean(name="trxHeaderMB",eager=true)
@Named(value = "trxHeaderMB")
@SessionScoped
public class TrxHeaderMB implements Serializable {
/**
* Creates a new instance of TrxHeaderMB
*/
private TrxHeader trxHeader;
private DataModel<TipoTransacao> tiposTransacao;
private TipoTransacao tipoSelecionado;
private String mensagem;
@Inject
@Any
@ManagedProperty(value="#{carrinhoMB}")
private CarrinhoMB carrinho;
public TrxHeaderMB() {
this.trxHeader = new TrxHeader();
tiposTransacao = listTipoTransacao();
/*
tipoSelecionado = new TipoTransacao();
tipoSelecionado.setNome("SELECIONE O TIPO");
tipoSelecionado.setId(0);
this.trxHeader.setData( Calendar.getInstance().getTime() );
this.trxHeader.setDataTransacao( Calendar.getInstance().getTime() );
this.trxHeader.setDescricao("EGAR");
this.trxHeader.setStatus("Criado");
this.trxHeader.setTipoTransacao(tipoSelecionado);
*/
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public CarrinhoMB getCarrinho() {
return carrinho;
}
public void setCarrinho(CarrinhoMB carrinho) {
this.carrinho = carrinho;
}
public TipoTransacao getTipoSelecionado() {
return tipoSelecionado;
}
public void setTipoSelecionado(TipoTransacao tipoSelecionado) {
this.tipoSelecionado = tipoSelecionado;
}
public TipoTransacao getTiposelecionado() {
return tipoSelecionado;
}
public void setTiposelecionado(TipoTransacao tiposelecionado) {
this.tipoSelecionado = tiposelecionado;
}
public DataModel<TipoTransacao> listTipoTransacao(){
TipoTransacaoDao dao = new TipoTransacaoDaoImpl();
tiposTransacao = new ListDataModel<TipoTransacao>(dao.list());
return tiposTransacao;
}
public DataModel<TipoTransacao> getTiposTransacao() {
return tiposTransacao;
}
public void setTiposTransacao(DataModel<TipoTransacao> tiposTransacao) {
this.tiposTransacao = tiposTransacao;
}
public TrxHeader getTrxHeader() {
return trxHeader;
}
public void setTrxHeader(TrxHeader trxHeader) {
this.trxHeader = trxHeader;
}
public void inserirHeader(ActionEvent event){
this.trxHeader = trxHeader;
}
public String inserirHeader(){
TrxHeaderDao dao = new TrxHeaderDaoImpl();
this.trxHeader.setStatus("CRIADO");
this.trxHeader.setTipoTransacao(tipoSelecionado);
dao.save(trxHeader);
return "index";
}
public String preparaCabecalho (){
carrinho.validaCarrinho();
if( carrinho.isContinuarAux() ){
return "Cabecalho.jsf";
}else{
return "EditarLinhas.jsf";
}
}
public void salvarHeader(ActionEvent event){
//this.trxHeader.setTipoTransacao(t);
Iterator it = carrinho.getLista().iterator();
List<TrxLine> ltl = new ArrayList<TrxLine>();
int qtde =0 ;
while (it.hasNext()) {
TrxLine trxLine = (TrxLine)it.next();
trxLine.setHeader(trxHeader);
ltl.add(trxLine);
qtde++;
}
System.err.print("linhas add + !!!!! QTDE:" + qtde );
this.trxHeader.setLinhas(ltl);
this.trxHeader.setStatus("CRIADO");
this.trxHeader.setData( Calendar.getInstance().getTime() );
this.trxHeader.setDataTransacao( Calendar.getInstance().getTime() );
this.trxHeader.setDescricao("TESTE JSF 2.0");
TrxHeaderDao dao2 = new TrxHeaderDaoImpl();
dao2.save(trxHeader);
this.mensagem = "Solicitação :" + trxHeader.getId() +" criada";
//
carrinho = new CarrinhoMB();
//this.trxHeader = new TrxHeader();
//
System.err.print("FIM DO SALVAR HEADER");
}
public String salvarHeader(){
//salvarHeader( new ActionEvent(null));
return "index.jsf";
}
public void emBranco(ActionEvent event){
}
public void preparaTpORdem(ActionEvent event){
this.tipoSelecionado = this.tiposTransacao.getRowData();
this.trxHeader.setTipoTransacao(this.tipoSelecionado);
System.err.print( "TIPOOOOO" + this.trxHeader.getTipoTransacao().getNome() );
}
}