Salvando dados Null ao usar o ManagedBean[RESOLVIDO]

6 respostas Resolvido
java
A

Boa Noite

Estou estudando Java Web, e criando um projeto com Mavem e Hibernate mas estou com um problema que não estou conseguindo resolver.

quando eu faço um teste usando uma classe de teste com um método main, os dados digitados salvam corretamente no banco. mas quando vou usar o ManagedBean não grava nada no banco e se eu pedir para mostrar os dados me retorna null. alguém poderia dar uma ajudinha.

Classe Dao

public class LojaDAO {

public Loja salvar(Loja loja) {

	EntityManager em = new ConnectionFactory().getConnection();

	try {

		em.getTransaction().begin();
		em.persist(loja);
		em.getTransaction().commit();
	} catch (Exception e) {
		em.getTransaction().rollback();
	} finally {
		em.close();
	}
	return loja;
}

Classe MAnagedBean

@SuppressWarnings("serial")

@ManagedBean(name = “MBLoja”)
public class LojaBean implements Serializable {

private Loja loja;

public Loja getLoja() {
	return loja;
}

public void setLoja(Loja loja) {
	this.loja = loja;
}

/*************** Métodos *******************/

@PostConstruct
public void novo() {

	loja = new Loja();
}

public void salvar() {

	try {

		LojaDAO lojaDao = new LojaDAO();
		lojaDao.salvar(loja);

		novo();

		System.out.println("Salvo com sucesso");
		System.out.println(loja.getId());
		System.out.println(loja.getCodigo_loja());
		System.out.println(loja.getNome());
		System.out.println(loja.getAcesso());

	} catch (Exception e) {
		e.getMessage();
	}
}

Arquivo xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>
Controle de Acesso
<h:form>

	<p:panel>

		<p></p>

		<p:outputLabel value="Código: " />
		<p:inputText value="#{MBLoja.loja.codigo_loja}" />

		<p:outputLabel value="Nome: " />
		<p:inputText value="#{MBLoja.loja.nome}" />

		<p:outputLabel value="Acesso: " />
		<p:inputText value="#{MBLoja.loja.acesso}" />

		<p:commandButton value="Salvar" actionListener="#{MBLoja.salvar()}" process="@this"/>


		<p:dataTable emptyMessage="Nenhum registro encontrado."
			paginator="true">

			<p:column headerText="Cód">
			</p:column>

			<p:column headerText="Nome">
			</p:column>

			<p:column headerText="Acesso">
			</p:column>

			<p:column headerText="Opções">
			</p:column>

		</p:dataTable>
	</p:panel>

</h:form>

</h:body>

Log do servidor

mai 05, 2018 11:51:20 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse.jst.jee.server:ControleLoja did not find a matching property.

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Server version:        Apache Tomcat/7.0.86

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Server built:          Apr 9 2018 20:16:54 UTC

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Server number:         7.0.86.0

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: OS Name:               Windows 7

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: OS Version:            6.1

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Architecture:          x86

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Java Home:             C:\Program Files\Java\jre1.8.0_111

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: JVM Version:           1.8.0_111-b14

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: JVM Vendor:            Oracle Corporation

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: CATALINA_BASE:         C:\Users\Aecio\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: CATALINA_HOME:         C:\Users\Aecio\Desktop\Eclipse\apache-tomcat-7.0.86

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dcatalina.base=C:\Users\Aecio\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dcatalina.home=C:\Users\Aecio\Desktop\Eclipse\apache-tomcat-7.0.86

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dwtp.deploy=C:\Users\Aecio\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Djava.endorsed.dirs=C:\Users\Aecio\Desktop\Eclipse\apache-tomcat-7.0.86\endorsed

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dfile.encoding=Cp1252

mai 05, 2018 11:51:20 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent

INFORMAÇÕES: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_111\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_111/bin/client;C:/Program Files/Java/jre1.8.0_111/bin;C:/Program Files/Java/jre1.8.0_111/lib/i386;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\MySQL\MySQL Utilities 1.6;C:\Program Files\Windows Kits\8.1\Windows Performance Toolkit;C:\Program Files\Microsoft SQL Server\110\Tools\Binn;C:\Program Files\Microsoft SDKs\TypeScript\1.0;C:\Program Files\Microsoft SQL Server\120\Tools\Binn;C:\Program Files\Windows Live\Shared;C:\Users\Aecio\Desktop\Eclipse;;.

mai 05, 2018 11:51:20 PM org.apache.coyote.AbstractProtocol init

INFORMAÇÕES: Initializing ProtocolHandler [http-bio-8080]

mai 05, 2018 11:51:20 PM org.apache.coyote.AbstractProtocol init

INFORMAÇÕES: Initializing ProtocolHandler [ajp-bio-8009]

mai 05, 2018 11:51:20 PM org.apache.catalina.startup.Catalina load

INFORMAÇÕES: Initialization processed in 751 ms

mai 05, 2018 11:51:20 PM org.apache.catalina.core.StandardService startInternal

INFORMAÇÕES: Starting service Catalina

mai 05, 2018 11:51:20 PM org.apache.catalina.core.StandardEngine startInternal

INFORMAÇÕES: Starting Servlet Engine: Apache Tomcat/7.0.86

mai 05, 2018 11:51:21 PM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile

INFORMAÇÕES: validateJarFile(C:\Users\Aecio\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ControleLoja\WEB-INF\lib\el-api-2.2.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class

mai 05, 2018 11:51:22 PM org.apache.catalina.startup.TldConfig execute

INFORMAÇÕES: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

mai 05, 2018 11:51:22 PM com.sun.faces.config.ConfigureListener contextInitialized

INFORMAÇÕES: Inicializando Mojarra 2.2.12 ( 20150720-0848 <a href="https://svn.java.net/svn/mojarra~svn/tags/2.2.12@14885">https://svn.java.net/svn/mojarra~svn/tags/2.2.12@14885</a>) para o contexto '/ControleAcessoLoja’

mai 05, 2018 11:51:22 PM com.sun.faces.spi.InjectionProviderFactory createInstance

INFORMAÇÕES: JSF1048: Anotações PostConstruct/PreDestroy presentes.  Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas.

mai 05, 2018 11:51:23 PM org.primefaces.webapp.PostConstructApplicationEventListener processEvent

INFORMAÇÕES: Running on PrimeFaces 6.2

mai 05, 2018 11:51:23 PM org.apache.coyote.AbstractProtocol start

INFORMAÇÕES: Starting ProtocolHandler [http-bio-8080]

mai 05, 2018 11:51:23 PM org.apache.coyote.AbstractProtocol start

INFORMAÇÕES: Starting ProtocolHandler [ajp-bio-8009]

mai 05, 2018 11:51:23 PM org.apache.catalina.startup.Catalina start

INFORMAÇÕES: Server startup in 3295 ms

mai 05, 2018 11:51:26 PM com.sun.faces.application.resource.ResourceHandlerImpl logMissingResource

ADVERTÊNCIA: JSF1064: Não foi possível encontrar ou fornecer o recurso, style.css, pela biblioteca, resources/css.

mai 05, 2018 11:51:44 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation

INFO: HHH000204: Processing PersistenceUnitInfo [

name: meuPU

]

mai 05, 2018 11:51:44 PM org.hibernate.Version logVersion

INFO: HHH000412: Hibernate Core {5.2.3.Final}

mai 05, 2018 11:51:44 PM org.hibernate.cfg.Environment 

INFO: HHH000206: hibernate.properties not found

mai 05, 2018 11:51:44 PM org.hibernate.cfg.Environment buildBytecodeProvider

INFO: HHH000021: Bytecode provider name : javassist

mai 05, 2018 11:51:45 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager 

INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}

mai 05, 2018 11:51:45 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure

WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)

mai 05, 2018 11:51:45 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost/db_controle_acesso]

mai 05, 2018 11:51:45 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001001: Connection properties: {user=root, password=****}

mai 05, 2018 11:51:45 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001003: Autocommit mode: false

mai 05, 2018 11:51:45 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections 

INFO: HHH000115: Hibernate connection pool size: 20 (min=1)

mai 05, 2018 11:51:45 PM org.hibernate.dialect.Dialect 

INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect

mai 05, 2018 11:51:46 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@ab1f96] for (non-JTA) DDL execution was not in auto-commit mode; the Connection local transaction will be committed and the Connection will be set into auto-commit mode.

Salvo com sucesso

0

0

null

null

6 Respostas

A

Alguem me ajuda por favor

M
Solucao aceita

O problema é que o seu commandButton tem apenas @this no process, ou seja, vai processar apenas o botao e vai esquecer os outros campos.

Você pode englobar os seus campos do formulario com um tipo de panel (panelGroup, panelgrid, outputPanel) e então passar o id do panel no process do commandButton, ou definir um id para cada campo e passar no process.

IMPORTANTE: no process você deve separar por espaço e não por virgula

Ex:

<p:commandButton process="campo1 campo2 campo3" />
M

Eu imagino que você queira atualizar a tabela quando salvar um registro, então coloca o atributo update no commandButton e passa o id da tabela como valor

A

cara de certo aqui, so tirei o @this e ja funcionou, obrigado pela ajuda.

M

Ah sim, só tirando o process ja funcionaria, mas ai iria processar a página toda (por padrão é @all) e dependendo da aplicação você poderia ter uma perda significativa de performance, nesse caso não… mas é bom ja ir fazendo as boas práticas.

Abraço

A

Valeu pela dica

Criado 6 de maio de 2018
Ultima resposta 7 de mai. de 2018
Respostas 6
Participantes 2