inputText JSF + Primefaces não popula bean [Resolvido]

6 respostas
G

Boa noite a todos, direto ao ponto, alguém sabe me falar porque meu campo de nomeProduto não está sendo populado? O projeto não possui erro de compilação, não apresenta erro de javascript no firebug e não é lançado nenhuma exception no console, simplismente não popula. Detalhe que os demais atributos da mesma classe são setados normalmente. Desde já agradeço pela atenção, ajuda e segue os trechos de código relevantes:

novaCotacao.xhtml
<p:fieldset legend="Pedido">		
							<h:panelGrid columns="3" cellpadding="2">
								<h:outputLabel value="Fornecedor"/>	
								<h:outputLabel value=""/>							
								<h:outputLabel value="Produto"/>
								<p:inputText value="#{cotacaoMB.pedidoCotacao.fornecedor.nome}" readonly="true"  maxlength="50" size="35"/>	
								<f:ajax disabled="false">
									<h:commandButton onclick="selecaoFornecedor.show();" type="button" image="/imagens/search_22x22.png" />
								</f:ajax>																			
								<p:inputText value="#{cotacaoMB.pedidoCotacao.nomeProduto}" title="teste"/>	
							</h:panelGrid>
              <h:panelGrid columns="5" cellpadding="2">
								<h:outputLabel value="Valor"/>
								<h:outputLabel value="Quantidade"/>
								<h:outputLabel value="Frete"/>						
								<h:outputLabel value="Total"/>
								<h:outputLabel value=""/>
								<p:inputText value="#{cotacaoMB.pedidoCotacao.valor}">
									<p:ajax event="blur" listener="#{cotacaoMB.calcularTotal}" update="totalPedido"/>
								</p:inputText>								
								<p:inputText value="#{cotacaoMB.pedidoCotacao.quantidade}">
									<p:ajax event="blur" listener="#{cotacaoMB.calcularTotal}" update="totalPedido"/>
								</p:inputText>
								<p:inputText value="#{cotacaoMB.pedidoCotacao.frete}">
									<p:ajax event="blur" listener="#{cotacaoMB.calcularTotal}" update="totalPedido"/>
								</p:inputText>
								<p:inputText id="totalPedido" value="#{cotacaoMB.pedidoCotacao.total}"   readonly="true"/>
								<h:commandButton image="/imagens/add_24x24.png">
									<p:ajax event="click" listener="#{cotacaoMB.adicionarPedido}" update="tabelaPedidos, gridPedido, menssagens"/>
								</h:commandButton>
							</h:panelGrid>
CotacaoMB
@SessionScoped
@ManagedBean(name="cotacaoMB")
public class CotacaoMB {
	
	//atributos da cotacao
	private Cotacao cotacao;	
	private CotacaoBO cotacaoBO;
	private PedidoCotacao pedidoCotacao;

        public CotacaoMB(){
		//cotacao
		cotacaoBO = new CotacaoBO();
		cotacao = new Cotacao();		
		pedidoCotacao = new PedidoCotacao();
       } 

	public PedidoCotacao getPedidoCotacao() {
		return pedidoCotacao;
	}

	public void setPedidoCotacao(PedidoCotacao pedidoCotacao) {
		this.pedidoCotacao = pedidoCotacao;
	}
PedidoCotacao
@Entity
@Table(name="pedido_cotacao", schema="pgi")
public class PedidoCotacao {
	
	private Integer idPedidoCotacao;
	private Cotacao cotacao;
	private Fornecedor fornecedor;
	private String nomeProduto;
	private BigDecimal valor;
	private BigDecimal quantidade;
	private BigDecimal frete;
	private BigDecimal total;
//gets sets e mapeamentos

6 Respostas

E

Tenta instanciar o Cotacao e Fornecedor de dentro do PedidoCotacao no construtor:

pedidoCotacao.setFornecedor(new Fornecedor());
pedidoCotacao.setCotacao(new Cotacao());

Acho que ta nulo esses objetos, por isso não está populando, veja se está dando um NullPointerException no console ou algo assim, pois em chamada ajax as exeções o tomcat não pega, apenas para a aplicação.

G

Não creio que o problema seja este, até porque como eu disse, os demais campos da mesma classe são populados, ou seja, o fornecedor o valor do produto a quantidade o total o frete tudo populado, menos o campo nomePedido.

E

Ao invés de utilizar um h:commandButton, tente um p:commandButton com actionListener, e lembre de deixar todos os campos dentro do mesmo h:form.

G

ai que ta um outro problema, estou utilizando h:commandButton com p:ajax porque por algum motivo que eu n descobri qual alguns commandbutton com actionListener deste form não estão chamando os métodos no managebean, sem falar da dificuldade que é pra colocar um icone em um botão primefaces

G

Bom, resolvi da seguinte forma, um pouco atrasado por falta de tempo mas vim postar minha solução. Não ficou bonito e também não tenho uma explicação lógica para isto mas funcionou e quem sabe não ajude alguém futuramente hehehe.

<p:inputText value="#{cotacaoMB.pedidoCotacao.nomeProduto}"> <p:ajax event="blur" listener="cotacaoBM.pedidoCotacao.nomeProduto}"/> </p:inputText>

W

Gabriel Garcia:
Bom, resolvi da seguinte forma, um pouco atrasado por falta de tempo mas vim postar minha solução. Não ficou bonito e também não tenho uma explicação lógica para isto mas funcionou e quem sabe não ajude alguém futuramente hehehe.

<p:inputText value="#{cotacaoMB.pedidoCotacao.nomeProduto}"> <p:ajax event="blur" listener="cotacaoBM.pedidoCotacao.nomeProduto}"/> </p:inputText>

Boa tarde Gabriel, você já descobriu o motivo desse erro?

Criado 29 de fevereiro de 2012
Ultima resposta 10 de jan. de 2013
Respostas 6
Participantes 3