Pessoal,
Olha que estranho o resultado de um simples formulário, seria isso um comportamento do JSF? Isso não seria prejudicial?
Como fazer para ter controle da consulta que ele realiza após submeter o formulário?
Esse é meu XHTML:
<?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:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<f:view encoding="UTF-8" contentType="text/html">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</h:head>
<h:body>
<h:form id="frm" prependId="false">
<p:panel id="panel1">
<p:inputText value="#{pessoaBean.pessoa.id}" /><br />
<p:inputText value="#{pessoaBean.pessoa.nome}" /><br />
<p:selectOneMenu value="#{pessoaBean.pessoa.cargo}">
<f:selectItem itemLabel="Qual o seu cargo?" />
<f:selectItems value="#{pessoaBean.cargos}" var="cargo" itemLabel="#{cargo.cargo}" itemValue="#{cargo}" />
</p:selectOneMenu><br /><br />
<p:commandButton value="Salvar" action="#{pessoaBean.gravar}" update="panel1" />
</p:panel>
</h:form>
</h:body>
</f:view>
</html>
Agora olha o meu MB:
package br.com.views;
imports ....
@ManagedBean
@ViewScoped
public class PessoaBean implements Serializable {
private static final long serialVersionUID = 1902384631923162403L;
private Pessoa pessoa;
private List<CargosFuncoes> cargos;
public PessoaBean() {
this.pessoa = new Pessoa();
}
@PostConstruct
public void init(){
GlobalRN globalRN = new GlobalRN();
this.cargos = globalRN.listaCargos();
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public List<PessoaUsuario> getPessoas() {
return pessoas;
}
public void setPessoas(List<PessoaUsuario> pessoas) {
this.pessoas = pessoas;
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public List<CargosFuncoes> getCargos() {
return cargos;
}
public void setCargos(List<CargosFuncoes> cargos) {
this.cargos = cargos;
}
public void gravar(){
PessoaRN pessoaRN = new PessoaRN();
pessoaRN.salvar(this.pessoa);
}
}
Agora vejam o resultado… Por que ele retorna os objetos que já estão na tela preenchidos, não estou gostando disso… E pior, não tenho controle sobre esse retorno, acredito que pode ser um comportamento do JSF, ou não?
Hibernate:
select
this_.id_cargo as id1_8_0_,
this_.sn_ativo as sn2_8_0_,
this_.ds_cargo as ds3_8_0_,
this_.sn_liberado as sn4_8_0_
from
cargos_funcoes this_
where
this_.id_cargo=?
Hibernate:
select
pessoa0_.id as id32_0_,
pessoa0_.cd_cargo as cd3_32_0_,
pessoa0_.nome as nome32_0_
from
Pessoa pessoa0_
where
pessoa0_.id=?
Hibernate:
insert
into
Pessoa
(cd_cargo, nome)
values
(?, ?)