Problema com JSF Primefaces

61 respostas
Cesar_Ryan

Galera, to desenvolvendo um sistema de pausas para a empresa, e estou na tela de login. consegui fazer algumas coisas, porém, ocorre alguns erros:
o primeiro deles, quando eu clico no: <p:commandLink value=“1ª Acesso"
oncomplete=“PF(‘dlgCadastro’).show();” actionListener=”#{usuarioBean.novo()}" /> que esta no meu xhtml esta acusando erro: GRAVE:

javax.faces.component.UpdateModelException: javax.el.PropertyNotWritableException: /pages/testePrimeFaces.xhtml @25,31 value="": Illegal Syntax for Set Operation

Caused by: javax.el.PropertyNotWritableException: /pages/testePrimeFaces.xhtml @25,31 value="": Illegal Syntax for Set Operation

at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:136)

at javax.faces.component.UIInput.updateModel(UIInput.java:832)

 31 more

Caused by: javax.el.PropertyNotWritableException: Illegal Syntax for Set Operation

mas ele abre o dialogo de adicionar novo usuário.

depois disso, quando eu digito, nome, matricula e senha, e clico em cadastrar, ele acusa outro erro: Caused by: javax.el.PropertyNotFoundException: Target Unreachable, ‘usuario’ returned null

ja procurei várias coisas e em vários videos, inclusive to fazendo este projeto a partir de um curso que tem no youtube. só que estou nesse dilema.

tentei anexar documentos dos arquivos do xhtml, bean e a classe java, mas nao deu certo pq sou usuário novo.
o bean:
package br.stefanini.projetopausa.bean;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.omnifaces.util.Messages;

import br.stefanini.projetopausa.domain.Usuario;

@SuppressWarnings(serial)

@ManagedBean

@ViewScoped

public class UsuarioBean implements Serializable {
private Usuario usuario;

public Usuario getUsuario() {
	return usuario;
}

public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}

public void salvar() {
	Messages.addGlobalInfo("Usuário:  " + usuario.getNome() + " de matricula: " + usuario.getMatricula()
			+ " cadastrado com sucesso!");
}

public void novo() {
	usuario = new Usuario();
}

}


o xhtml:

<?xml version="1.0" encoding="UTF-8" ?>
<h:outputStylesheet library="css" name="file.css" />

<title>Teste de Login 2</title>
</h:head>

<h:body>

<h:form>

<h:panelGrid width=100% style=text-align:center>



<p:graphicImage library=imagens name=stefanini.jpg width=500 />
<div class="login-box" />
		<h1>Login</h1>

		<!-- Campo de usário -->
		<p:inputText value=""
			placeholder="Matricula" />

		<!-- Campo da senha -->
		<p:password value="" placeholder="Senha" />

	</h:panelGrid>

	<h:panelGrid columns="2" width="100%" style="text-align:center">

		<p:commandLink value="1ª Acesso"
			oncomplete="PF('dlgCadastro').show();" actionListener="#{usuarioBean.novo()}" />

		<p:commandButton value="Entrar" />

	</h:panelGrid>

</h:form>

<p:dialog header="Cadastro de Usuário" widgetVar="dlgCadastro"
	draggable="false" resizable="false" modal="true" >

	<h:form>
		<h:panelGrid>
			<p:inputText value="#{usuarioBean.usuario.nome}" placeholder="Nome" size="30" maxlength="55" />
			<p:inputText value="#{usuarioBean.usuario.matricula}" placeholder="Matricula" size="15"
				maxlength="7" />
			<p:inputText value="#{usuarioBean.usuario.senha}" placeholder="Senha" size="15" maxlength="12"/>
		</h:panelGrid>
		<h:panelGrid columns="2">
			<p:commandButton value="Cadastrar" actionListener="#{usuarioBean.salvar()}" />
			<p:commandButton value="Cancelar" oncomplete="PF('dlgCadastro').hide();"/>
		</h:panelGrid>
	</h:form>
</p:dialog>

</h:body>

61 Respostas

Mike

Retira o value="" do inputText e do password, ai o erro vai sumir. Se você não quer ligar o componente a nenhum atributo é só não por

Cesar_Ryan

é, eu reparei nisso agora e tirei e nao deu erro…
porém ele nao ta exibindo a mensagem que era para exibir no primefaces, quando eu chamo o metodo pelo botão cadastrar no xhtml:

<p:commandButton value=“Cadastrar"
actionListener=”#{usuarioBean.salvar()}" />

sabe me dizer pq?

Mike

Você colocou o componente <p:messages /> na página?

Cesar_Ryan

coloquei não, pq na video aula que eu vi, ele nao usa isso, olha: https://www.youtube.com/watch?v=RxCl2g8JLOo&list=PL_GwGUsBlNyfI0W3ggfffhBdJUqB4981Z&index=46

Cesar_Ryan

amigo consegui, realmente faltava esse componente mesmo, eu nao reparei na videoaula passada. muito obrigado. :slight_smile:

Cesar_Ryan

amigo mike deu certo, funcionou se não for pedir muito, como eu faria para estilizar o primefaces de acordo com o que eu quero?
pq eu tinha criado de outra forma sem ser com primefaces, e ficou com outra cara, mas não conseguia chamar um metodo dentro da classe bean, pq nao tinha actionlistener… ai queria estilizar os componentes. sei que tem a tag style, mas dizem que não é esta muito bom no prime.

andrebmarinho

Amigo, recomendo comprar um template do primefaces.

Mike

É facinho alterar

Como JSF gera um monte de tag por baixo, é necessario inspecionar o componente pelo navegador para ver as tags e classes css geradas.

Sempre que eu quero alterar o css de um componente, eu defino um styleClass a ele e inpseciono o componente para ver o que foi gerado e só então eu mexo na classe css.

Segue o exemplo:

<div class="ui-panelgrid ui-panelgrid-responsive">
    <div class="ui-grid-row">
           <div class="ui-panel-grid-cell">

           </div>
    </div>
<div>
o css seria assim:

.ui-panelgrid.ui-panelgrid-responsive .ui-grid-row .ui-panel-grid-cell {
padding: 4px;
}

Perceba o seguinte, cada classe você irá comecar com um ponto (.), como ui-panelgrid e ui-panelgrid-responsive estão no mesmo componente, eu deixo eles tudo juntos (.ui-panelgrid.ui-panelgrid-responsive), ui-grid-row e ui-panel-grid-cell estão em outros componentes, entao eu dou um espaço entre as classes.

O Inspecionar do navegador será o seu melhor amigo para isso

Mike

Eu pessoalmente acho bobeira e caro.
A menos que seja um projeto da empresa e o prazo seja curtíssimo.

É bobeira pois você não pratica o css e caro pq é em dolar.

A menos que seja um projeto da empresa e o prazo seja curtíssimo, ai talvez compense.
Mas se esta aprendendo JSF, fique longe de comprar templates.

O que você pode fazer para aprender é entrar no site da DEMO do template, inspecionar o código e tentar fazer parecido, para aprender a fazer tal design

Cesar_Ryan

eu quero aprender mesmo… então to com um novo problema… o meu código xhtml:

<?xml version="1.0" encoding="UTF-8" ?>
<h:outputStylesheet library="css" name="file.css" />

<title>Login</title>
</h:head>

<h:body>

<p:growl id=mensagem/>

<h:form>

<h:panelGrid width=100% style=text-align:center>



<p:graphicImage library=imagens name=stefanini.jpg width=500 />
<div class="login-box" />
		<h1>Login</h1>

		<!-- Campo de usário -->
		
		<p:inputText placeholder="Matricula" />

		<!-- Campo da senha -->
		<p:password placeholder="Senha" />

	</h:panelGrid>

	<h:panelGrid columns="2" width="100%" style="text-align:center">

		<p:commandLink value="1ª Acesso"
			oncomplete="PF('dlgCadastro').show();"
			actionListener="#{usuarioBean.novo()}" update=":formCadastro:painelCadastro" />

		<p:commandButton value="Entrar" />

	</h:panelGrid>

</h:form>

<p:dialog header="Cadastro de Usuário" widgetVar="dlgCadastro"
	draggable="false" resizable="false" modal="true">

	<h:form id="formCadastro">
		<h:panelGrid id="painelCadastro">
			<p:inputText value="#{usuarioBean.usuario.nome}" placeholder="Nome"
				size="30" maxlength="55" />
			<p:inputText value="#{usuarioBean.usuario.matricula}"
				placeholder="Matricula" size="15" maxlength="7" />
			<p:inputText value="#{usuarioBean.usuario.senha}"
				placeholder="Senha" size="15" maxlength="12" />
		</h:panelGrid>
		<h:panelGrid columns="2">
			<p:commandButton value="Cadastrar"
				actionListener="#{usuarioBean.salvar()}" update=":mensagem :formCadastro:painelCadastro"/>
			<p:commandButton value="Cancelar"
				oncomplete="PF('dlgCadastro').hide();" />
		</h:panelGrid>
	</h:form>
</p:dialog>

</h:body>

só que eu quero por um icone ao lado do <p:inputText placeholder=“Matricula” />
e só consegui usando
só que ele fica em cima, ai botei <h:panelgrid colums 2, só que ele não fica no centro, nem se eu por widht 100% nem se eu por style text-alighn center… alguem sabe me dizer como faço? e se width é pra por no centro tbm hehe… procurei tanto já como por um icone de usuario só que a unica maneira q eu achei foi essa, só q ainda n deu certo… ja troquei e cirei varios <h:form tbm e nao deu.:frowning:

Mike

A versão 6.2 do PrimeFaces tem suporte a isso.

Coloca no google: inputGroup PrimeFaces ou vai no showcase e procura la

Cesar_Ryan

só na versão 6.2? e na versão 5.2 nao tem suporte a por icone no inputtext?

Mike

Você pode fazer na mão se quiser, mas utilizando o framework apenas no 6.2.

Pq não atualiza pra 6.2?
É melhor você aprender na versao atual do que na antiga

Cesar_Ryan

mas se eu atualizar e quiser os componentes que nem no username desse link: https://www.primefaces.org/showcase/ui/input/inputGroup.xhtml é só por assim?

<p:inputText placeholder=“Username” />

Cesar_Ryan

eu botei esse código:

</h:panelGrid>



<h:panelGrid columns=“2”  style=“text-align:center” >

<i></i>

<p:inputText placeholder=“Username” />
<!-- Campo da senha -->
		<p:password placeholder="Senha" />
	</h:panelGrid>

só que ele não fica centralizado ¬¬ aff, ta ficando a esquerda tudo… e eu queria que ficasse no centro como tela de login msm

Mike

Ai já é questão de CSS.

Da uma estudada sobre grid css do PrimeFaces
https://www.primefaces.org/showcase/ui/panel/grid.xhtml

Documentação completa:

https://forum.primefaces.org/viewtopic.php?t=47357

PS:Não use a classe ui-grid-col, há alternativas melhores

Cesar_Ryan

Vou da uma olhada pra vê se entendi… pq ao meu ver do jeito que eu fiz era para dar certo… pq painel grid coluna 2 são 2 colunas… mas vou da uma olhada… é uma procura mais de algum vídeo no youtube

Mike

Na verdade não, o text-align como o próprio nome diz: alinha texto e o panelgrid por padrão é uma table

Adicione margin: 0 auto a classe ui-panelgrid, que ai ela vai centralizar.

Mas lembrando, isso é problema de CSS e não de JSF/PrimeFaces, na dúvida inspecione

andrebmarinho

Entendo seu posicionamento.

Apenas pra deixar aqui a titulo de conhecimento aos navegantes,

Vamos analisar pelo prisma do custo beneficio: Imagine que você tem um projeto pra entregar a uma empresa e precisa fazer a parte de designer, o que vai ser mais barato? Contratar um designer a um custo (digamos R$ 2.000,00) ou comprar um template por $ 80? O que vai ser mais rápido: Esperar um designer concluir um projeto ou implementar um template?

Além do mais comprando o template esta ajudando o projeto que tanto nos ajuda.

Mas cada caso é um caso. Tem que ser estudado.

Mike

O fato é que ele esta aprendendo

E o preço não é esse: 80$

A licença comercial do Ultima esta: 890 dólares. Existe mais baratos, só que a qualidade cai, como por exemplo o Icarus, cuja a licença comercial esta 290 dólares.

O que realmente esta em jogo nesse momento é o conhecimento

andrebmarinho

Mike,

Por favor coloca ai o link da pagina que você esta achando esses preços.

Mike

https://www.primefaces.org/store/

andrebmarinho

Mike, Essa pagina não tem informação. você lembra qual foi a pagina que você tirou aquelas informações de preços?

Mike

Você por acaso fez o login?

Pq você não posta a sua referência, já que quem falou primeiro de preço exato foi você

andrebmarinho

Olha Mike,

Ainda eu não comprei o tema na verdade, mas estou pretendendo comprar, conforme o link:

Icarus: 29$
Omega: 29$
Apollo: 29$
Manhattan: 59$
Morpheus: 59$
Poseidon: 59$
Atlantis: 59$
Verona: 59$
Ultima: 89$
Barcelona: 89$
Serenity: 89$
Paradise: 89$
Avalon: 89$
Mike

Isso ai é para uso NÃO COMERCIAL, é 10x mais barato.

Caso você queira colocar em uma empresa, multiplique o valor por 14

andrebmarinho

Explica qual a diferença.

Mike

Pra que comprar um tema/template pra uso não comercial?
Além de não ter ganho financeiro, não vai saber usar css/js

Usar uma licença não comercial para uso comercial é PROIBIDO.

andrebmarinho

Deixa eu vê se entendi: Conforme você esta explicando: Eu posso comprar o template, porém o projeto que eu fizer tem que ficar apenas no meu notebook para fins didaticos? É isso?

Mike

Sim, é isso!

Isso esta escrito no regulamento do tema/template

andrebmarinho

Perai,

Deixa eu alinhar aqui, pra verificar se a gente esta falando a mesma coisa, o primefaces dois tipos tipo de licença: Basic License e Extended License, correto? Ou você sabe mais de outra?

Mike

São esses dois tipos de licença mesmo.

Basic License: Para uso não comercial
Extended License: Para uso Comercial

andrebmarinho

Pronto acho que agora chegamos a uma conclusão.

Mike, não é da forma que você esta falando,

De acordo com o paragrafo 7 da Basic License, diz assim:

https://www.primefaces.org/layouts/licenses

You can charge only one client for the End Product. If you or your client want to Sell the End Product, you will need the Extended License.

Ou seja você pode cobrar de um cliente o produto final. Porém se houve uma revenda do mesmo produto dai tera que ter a Extended License.

Sendo assim, pra um projeto pra um cliente pode sim cobrar usando uma licença basica girando de 39$ a 89$.

Mike

Selecione um Layout e role a página até a sessão de Licenças

Exemplo: https://www.primefaces.org/layouts/ultima/

Basic Licence
$89
Non Commercial Usage
Single End Product, No Multi-Use
Lifetime Support
Unlimited Updates

Extended License
$890
Commercial Usage
Single End Product, No Multi-Use
Lifetime Support
Unlimited Updates

Uso comercial:
O uso comercial é caracterizado por lucro. Ou seja, sempre que usarmos algo, e este algo, nos gerar lucro (de toda e qualquer espécie), este uso é comercial.

andrebmarinho

Mike,

Você esta confundindo as coisas.

Por exemplo: O Cesar_Ryan comprou o template Ultima por 89$ com a licença: Basic Licence. Logo ele poderá vender o produto final para seu cliente. Isso esta muito claro! No paragrafo 7º .

O que ele não pode ser feito é criação de revendas do sistema. Entendeu?

Eu entendi assim, se você verificar algo diferente me mostre na licença.
https://www.primefaces.org/layouts/licenses

Mike

Na hora que você vai compra a licença, condiz com o que eu disse:

Basic License: para uso não comercial e Extended License para uso comercial.

O que é uso não comercial e comercial para você?

andrebmarinho

Mike,

O entendimento não uma coisa subjetiva, esta na regra. E lá esta dizendo que você pode cobrar Sim!

Na licença diz assim:

7º You can charge only one client for the End Product.
Tradução: “Você pode cobrar apenas um cliente pelo produto final.”

O que não pode ser feito esta na segunda parte do paragrafo 7º:

If you or your client want to Sell the End Product, you will need the Extended License.

Tradução: “Se você ou seu cliente quiser vender o produto final, você precisará da Licença Estendida.”

O que eu entendo é o seguinte: Eu sou um freelancer e fechei um projeto com um cliente X, Comprei um template com a licença básica e isso me da o direito de cobrar pelo produto final para esse cliente, porém se o meu cliente ou eu quiser vender pra outros, então nesse caso tenho que comprar a licença estendida. Você entendeu diferente?

Mike

Eu entendo de outra forma, assim:

Uso não comercial: uma atividade ou entidade que em algum sentido não envolve comércio.

Uso comercial: é caracterizado por lucro. Ou seja, sempre que usarmos algo, e este algo, nos gerar lucro (de toda e qualquer espécie), este uso é comercial.

Para você, um sistema de relatório colocado na empresa é uso comercial ou não?

andrebmarinho

Mike,

De acordo com os termos da licença eu posso criar um sistema de relatório e cobrar um dinheiro por ele pra atender um cliente especifico sem nenhum problema, usando a licença Basic.

Mike

Então ta :+1:

Mas antes de comprar a licença, verifique com o pessoal da Prime para ver se é isso mesmo, pois o significado de uso comercial e não comercial é outro.

Mas ainda sim, não compre o layout se estiver aprendendo.

Mike

@andrebmarinho
E para você, um sistema de relatório colocado na empresa é uso comercial ou não?

andrebmarinho

Vamos imaginar o seguinte um sistema de relatório e uma dezena de caixa de sapatos sendo colocado numa sapataria. Mas o que terá uso comercial?

O sistema de relatório será para uso da empresa (não comercial). E os sapatos para uso comercial, ou seja foi comprado para comercialização.

Mike

Pelo que entendi você considera comercial só o que é venda…Só que qualquer software usado dentro de uma empresa é considerado como uso comercial.

andrebmarinho

Veja o que você diz: "

"

O que vai determinar como o software é usado , distribuído e identificado é a licença, que esta escrito na licença? Isso varia de acordo com o fabricante.

Vamos nos ater aqui a licença básica do Primefaces, você entende diferente? então me mostre diretamente na licença.

Pra o Primefaces identifica sua licença como duas categorias: basic e extends, na basic você pode criar um software e até cobrar pra um único cliente, então pra critério de identificação por algum motivo eles consideram como uso não-comercial.
Agora Mike se você não concorda com essa nomenclatura deles (Primefaces) vá reclamar com eles.

Mike

Eu falei o SIGNIFICADO de USO COMERCIAL e USO NÃO-COMERCIAL apenas.

Pra mim pouco importa a nomenclatura deles, não vou usar o layout mesmo, quem tem que ater a isso é quem vai comprar e ai dei um toque.

Eu só falei aqui o que estava escrito na hora da compra.

Na básica estava escrito uso não-comercial e então falei o que é uso não-comercial.
Na estendida estava escrito uso comercial e então falei o que é uso comercial.

Cesar_Ryan

Amigos não to conseguindo resolver meu problema na tela de login… alguém pode me ajudar? Tentei fzr o que o mike disse, mas não deu certo.:confused: queria tbm saber como faz para que quando eu digitar os dados de login e senha ele ver se tem no banco e ir pra outra tela… obg

andrebmarinho

Cesar,

Você pode fazer isso de diversas formas, inclusive usando um framework chamado Spring Security.

Porém se você esta fazendo um projeto baseado no curso do Sergio Delfino , ele faz de outra forma.

Qual tua duvida? Qual erro esta dando?

Mike

O alinhamento vertical e horizontal você pode fazer com o transform do css.
Só o vertical você pode fazer com o código acima, se o panelgrid n tiver pai, é para funcionar.

Se algo não deu certo, posta o código, pois o que eu postei aqui funciona…

O showcase do PrimeFaces tem alguns exemplos do panelgrid, você pode ir la e colocar o código que falei, que vai dar certo.

Sobre autorização você pode fazer com Phase Listener, que já é nativo do JSF e você mexe com código java.

Para começar:
Sabe trazer registro do banco? Se sim, retorna o nome da página desejada para fazer a navegação.
Caso não saiba, estude JDBC.

Taca no google: “guj login Mike”, irá aparecer diversos posts meu sobre login… algum deles tem muita informação.

Edit: caso você queira tentar fazer algo com CSS, eu sugiro que você crie um arquivo html aparte e faça as coisas la, pois o JSF gera um monte de html e css por baixo, ai fica mais difícil de alterar algo caso você não saiba o que esta fazendo.

Cesar_Ryan

Andre, meu projeto é diferente do dele, o meu é um “simples” porém bem dificil até agora, sistema de pausa, e tem muitaaa aula no curso do sergio… eu ja assisti varias, anda acontecendo alguns erros.
primeiramente quero destacar o seguinte.

-------------------CÓDIGO COM ICONE E COM BOTÃO DESALINHADO COM INPUTTEXT-----

<?xml version="1.0" encoding="UTF-8" ?>
<h:outputStylesheet library="css" name="file.css" />

<title>Login</title>
</h:head>

<h:body>

<p:growl id=mensagem />

<h:form>

<h:panelGrid width=100% style=text-align:center>



<p:graphicImage library=imagens name=stefanini.jpg width=500 />
<div class="login-box" />
		<h1>Login</h1>

		<!-- Campo de usário -->


		<p:inputText placeholder="Matricula">
			<i class="fa fa-user"></i>
		</p:inputText>

		<!-- Campo da senha -->
		<p:password placeholder="Senha">
			<i class="fa fa-lock"></i>
		</p:password>

	</h:panelGrid>

	<h:panelGrid columns="2" width="100%" style="text-align:center">

		<p:commandLink value="1ª Acesso"
			oncomplete="PF('dlgCadastro').show();"
			actionListener="#{usuarioBean.novo()}"
			update=":formCadastro:painelCadastro">

		</p:commandLink>

		<p:commandButton value="Entrar" />

	</h:panelGrid>

</h:form>

<!--  Tela de cadastro de usuario  -->
<p:dialog header="Cadastro de Usuário" widgetVar="dlgCadastro"
	draggable="false" resizable="false" modal="true">

	<h:form id="formCadastro">
		<h:panelGrid id="painelCadastro">
			<p:inputText value="#{usuarioBean.usuario.nome}" placeholder="Nome"
				size="30" maxlength="55" required="true"
				requiredMessage="Campo nome obrigatório!" />
			<p:inputText value="#{usuarioBean.usuario.matricula}"
				placeholder="Matricula" size="15" maxlength="7" required="true"
				requiredMessage="Campo matricula obrigatório!" />
			<p:password value="#{usuarioBean.usuario.senha}" placeholder="Senha"
				size="15" maxlength="12" required="true"
				requiredMessage="Campo senha obrigatório!" />
		</h:panelGrid>
		<h:panelGrid columns="2">
			<p:commandButton value="Cadastrar"
				actionListener="#{usuarioBean.salvar()}"
				update=":mensagem :formCadastro:painelCadastro" />
			<p:commandButton value="Cancelar"
				oncomplete="PF('dlgCadastro').hide();" />
		</h:panelGrid>
	</h:form>
</p:dialog>

</h:body>

------------------------------ FIM DO CÓDIGO -----------------------------------------

ocorre o seguinte erro quando boto o icone, e na primeira tela sem o icone não da erro nenhum de advertencia.

isso é o primeiro passo de erro que to tendo de vários.

o segundo é que o botão entrar e primeiro acesso estão desalinhados , quero deixar eles todos um do lado do outro sem esse espaço tremendo. e quero dar um espaço entre o icone e o inputtext do usuario e login. procurei vários jeitos e não consegui até agora.

obs: eu não sei usar css e não sei como que posso fazer um arquivo css e ele alterar o css do meu primefaces… vi algumas videoaulas na internet até em ingles ( que não sei muito bem) e não sai do canto ainda.


e em terceiro que posso assistir as aulas do curso do sérgio e ver a forma que ele usa de que assim que eu apertar no command buton entrar ele verificar no banco e ir para a outra pagina, mas por enquanto queria ver esses erro.

me ajuda?:smiley: kkkkkkkk

Cesar_Ryan

então mike, eu não sei mexer em css direito e não sei também tipo, como fazer um arquivo em css e fazer com que ele fique no meu primefaces, pq ja tentei usando uma videoaula, mas ele não altera nada.

sobre a autorização e passar para a outra tela, vou ver as videoaulas do sergio como o andre comentou, pq tou um pouco distante dessa parte, mas já queria deixar feito isso, pq como falei no meu comentário aqui em cima, o projeto de ensino dele é diferente do meu.

trazer registro dos banco assim de cabeça não, mas a minha pagina para ver as pausas das pessoas ja esta com dados do banco, e posso rever a aula que ele mostra como “fazer” isso.
vou da uma olhada nesse JDBC

procurei no google como vc falou mas não achei quase muita coisa com o que vc mensinou: “guj login Mike”,

eu tenho um arquivo salvo das duas paginas com elas feita até onde eu gostei…
tentei dar uma alterada pelo css mas não consegui nada.

Mike

Escreve: “guj login mike jsf”, ai aparece mais coisas

Pra alinhar o botão e o link de maneira fácil, você pode colocar o botao e o link dentro de um panelgroup, ai os dois ocuparão apenas uma coluna do panelgrid

Cesar_Ryan

fiz do jeito que vc falou e nao teve diferença, a não ser que eu tenha que por alguma propriedade… pq primefaces pra mim é um pouco dificil, pq eu olho o showcase lá e não consigo deixar ele igual como ta la, ou me basear hehe… da sempre algum problema.

eu fiz assim

----------------- jeito 1 -----------------------

<h:panelGroup >

<h:panelGrid width=100% style=text-align:center>



<p:graphicImage library=imagens name=stefanini.jpg width=500 />
<div class="login-box" />
		<h1>Login</h1>

		<!-- Campo de usário -->


		<p:inputText placeholder="Matricula"
			value="#{autenticacaoBean.usuario.matricula}" required="true"
			requiredMessage="O campo matricula é obrigatório!">
			<i class="fa fa-user"></i>
		</p:inputText>

		<!-- Campo da senha -->
		<p:password placeholder="Senha"
			value="#{autenticacaoBean.usuario.senha}" required="true"
			requiredMessage="O campo senha é obrigatório!">
			<i class="fa fa-lock"></i>
		</p:password>

	</h:panelGrid>

	<h:panelGrid columns="2" width="100%" style="text-align:center">

		<p:commandLink value="1ª Acesso"
			oncomplete="PF('dlgCadastro').show();"
			actionListener="#{usuarioBean.novo()}"
			update=":formCadastro:painelCadastro">

		</p:commandLink>

		<p:commandButton value="Entrar" update=":mensagem" actionListener="#{autenticacaoBean.autenticar()}" />

	</h:panelGrid>

</h:panelGroup>

-------------------- jeito 2 --------------------

<h:panelGrid width=“100%” style=“text-align:center”>

<p:graphicImage library=“imagens” name=“stefanini.jpg” width=“500” />

<div class="login-box" />
		<h1>Login</h1>

		<!-- Campo de usário -->


		<p:inputText placeholder="Matricula"
			value="#{autenticacaoBean.usuario.matricula}" required="true"
			requiredMessage="O campo matricula é obrigatório!">
			<i class="fa fa-user"></i>
		</p:inputText>

		<!-- Campo da senha -->
		<p:password placeholder="Senha"
			value="#{autenticacaoBean.usuario.senha}" required="true"
			requiredMessage="O campo senha é obrigatório!">
			<i class="fa fa-lock"></i>
		</p:password>

	</h:panelGrid>

<h:panelGroup >
<h:panelGrid columns=“2” width=“100%” style=“text-align:center”>

<p:commandLink value="1ª Acesso"
			oncomplete="PF('dlgCadastro').show();"
			actionListener="#{usuarioBean.novo()}"
			update=":formCadastro:painelCadastro">

		</p:commandLink>

		<p:commandButton value="Entrar" update=":mensagem" actionListener="#{autenticacaoBean.autenticar()}" />

	</h:panelGrid>

</h:panelGroup>

e nenhum dos dois jeitos deu certo?hehe, pode me dizer como faz?:smiley:

Mike

O panelgroup vai dentro do panelgrid…

Cesar_Ryan

entendi, tentarei aqui, agora estou em um outro dilema… sabe aquela tela de menubar que vc tem quando ta logado e quer editar seu cadastro? como faço para que quando eu clicar em editar cadastro ele saber que se trata do meu usuário? na aula do sergio ele faz usando com a propriedade “var” só que o meu p menu bar, submenu e menuItem nao tem esse atributo e agora? :frowning: help please.

o video que ele ensina como excluir um elemento, só que esta em uma fila e tal…

Cesar_Ryan
Boa noite, ultima dúvida antes de ir dormir, estava cadastrando usuários normalmente, ai depois passei para a fase de se logar e ir para outra tela com autenticação.

agora ele autentica, mas na hora de gravar, ele não grava os usuários, pq da erro:

set 25, 2018 2:33:50 AM com.sun.faces.lifecycle.ProcessValidationsPhase execute

ADVERTÊNCIA: /pages/telaPrincipalLogin.xhtml @64,50 value="#{usuarioBean.usuario.nome}": Target Unreachable, usuario returned null

javax.el.PropertyNotFoundException: /pages/telaPrincipalLogin.xhtml @64,50 value="#{usuarioBean.usuario.nome}": Target Unreachable, usuario returned null

at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)

at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:152)

at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:199)

at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045)

at javax.faces.component.UIInput.validate(UIInput.java:975)

at javax.faces.component.UIInput.executeValidate(UIInput.java:1248)

at javax.faces.component.UIInput.processValidators(UIInput.java:712)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)

at javax.faces.component.UIForm.processValidators(UIForm.java:253)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)

at org.primefaces.component.dialog.Dialog.processValidators(Dialog.java:425)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)

at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195)

at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

Caused by: javax.el.PropertyNotFoundException: Target Unreachable, usuario returned null

at org.apache.el.parser.AstValue.getTarget(AstValue.java:124)

at org.apache.el.parser.AstValue.getType(AstValue.java:58)

at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:168)

at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)

 38 more
set 25, 2018 2:33:50 AM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError

GRAVE: javax.el.PropertyNotFoundException: /pages/telaPrincipalLogin.xhtml @64,50 value="#{usuarioBean.usuario.nome}": Target Unreachable, usuario returned null

at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)

at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:152)

at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:199)

at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045)

at javax.faces.component.UIInput.validate(UIInput.java:975)

at javax.faces.component.UIInput.executeValidate(UIInput.java:1248)

at javax.faces.component.UIInput.processValidators(UIInput.java:712)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)

at javax.faces.component.UIForm.processValidators(UIForm.java:253)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)

at org.primefaces.component.dialog.Dialog.processValidators(Dialog.java:425)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)

at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195)

at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

Caused by: javax.el.PropertyNotFoundException: Target Unreachable, usuario returned null

at org.apache.el.parser.AstValue.getTarget(AstValue.java:124)

at org.apache.el.parser.AstValue.getType(AstValue.java:58)

at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:168)

at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)

 38 more

sei que o erro é pq ele ta nulo, mas não entendo pq… se o do professor sergio ta dando certo, apesar de o dele nao ser igual o meu.

segue os meus códigos abaixo.

-------------------------------- tela principal xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<h:outputStylesheet library="css" name="file.css" />

<title>Login</title>
</h:head>

<h:body>

<p:growl id=mensagem />

<h:form>

<h:panelGrid width=100% style=text-align:center>



<p:graphicImage library=imagens name=stefanini.jpg width=500 />
<div class="login-box" />
		<h1>Login</h1>

		<!-- Campo de usário -->


		<p:inputText placeholder="Matricula" maxlength="7"
			value="#{autenticacaoBean.usuario.matricula}" required="true"
			requiredMessage="O campo matricula é obrigatório!">
			
		</p:inputText>

		<!-- Campo da senha -->
		<p:password placeholder="Senha" maxlength="10"
			value="#{autenticacaoBean.usuario.senha}" required="true"
			requiredMessage="O campo senha é obrigatório!">
			
		</p:password>

	</h:panelGrid>

	<h:panelGrid columns="2" width="100%" style="text-align:center">

		<p:commandLink value="1ª Acesso"
			oncomplete="PF('dlgCadastro').show();"
			actionListener="#{usuarioBean.novo()}"
			update=":formCadastro:painelCadastro" />

		<p:commandButton value="Entrar" update=":mensagem"
			actionListener="#{autenticacaoBean.autenticar()}" />

	</h:panelGrid>

</h:form>

<!--  Tela de cadastro de usuario  -->
<p:dialog header="Cadastro de Usuário" widgetVar="dlgCadastro"
	draggable="false" resizable="false" modal="true">

	<h:form id="formCadastro">
		<h:panelGrid id="painelCadastro">
			<p:inputText value="#{usuarioBean.usuario.nome}" placeholder="Nome"
				size="30" maxlength="55" required="true"
				requiredMessage="Campo nome obrigatório!" />
			<p:inputText value="#{usuarioBean.usuario.matricula}"
				placeholder="Matricula" size="15" maxlength="7" required="true"
				requiredMessage="Campo matricula obrigatório!" />
			<p:password value="#{usuarioBean.usuario.senha}" placeholder="Senha"
				size="15" maxlength="12" required="true"
				requiredMessage="Campo senha obrigatório!" />
		</h:panelGrid>
		<h:panelGrid columns="2">
			<p:commandButton value="Cadastrar"
				actionListener="#{usuarioBean.salvar()}"
				update=":mensagem :formCadastro:painelCadastro" />
			<p:commandButton value="Cancelar"
				oncomplete="PF('dlgCadastro').hide();"  />
		</h:panelGrid>
	</h:form>
</p:dialog>

</h:body>

--------------------------------- usuario bean
package br.stefanini.projetopausa.bean;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.ViewScoped;

import org.omnifaces.util.Messages;

import br.stefanini.projetopausa.dao.UsuarioDAO;
import br.stefanini.projetopausa.domain.Usuario;

@SuppressWarnings(serial)

@ManagedBean

@ViewScoped

public class UsuarioBean implements Serializable {
private Usuario usuario;
private List<Usuario> usuarios;

public Usuario getUsuario() {
	return usuario;
}

public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}

public List<Usuario> getUsuarios() {
	return usuarios;
}

public void setUsuarios(List<Usuario> usuarios) {
	this.usuarios = usuarios;
}



@PostConstruct
public void listar() {
	try {
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		usuarios = usuarioDAO.listar();
	} catch (RuntimeException erro) {
		Messages.addGlobalError("Ocorreu um erro ao tentar listar o usuario");
		erro.printStackTrace();
	}

}

public void teste() {
	Messages.addGlobalInfo("teste");
	System.out.println("teste");
}

public void novo() {
	usuario = new Usuario();
}

public void salvar() {
	UsuarioDAO usuarioDAO = new UsuarioDAO();
	usuarioDAO.salvar(usuario);
	Messages.addFlashGlobalInfo("Usuario salvo com sucesso.");
}
}

-------------------------------------- usuario class java

package br.stefanini.projetopausa.domain;
import javax.persistence.Column;

import javax.persistence.Entity;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.Transient;

@Entity
public class Usuario {

@Id
@Column(length = 7)
private String matricula;

@Column(length = 32, nullable = false)
private String senha;

@Transient
private String senhaCriptografada;

@Column(length = 55, nullable = false)
private String nome;

@Column(nullable = false)
private boolean status = false;

public boolean isStatus() {
	return status;
}

public void setStatus(boolean status) {
	this.status = status;
}

public String getMatricula() {
	return matricula;
}

public void setMatricula(String matricula) {
	this.matricula = matricula;
}

public String getSenha() {
	return senha;
}

public void setSenha(String senha) {
	this.senha = senha;
}



public String getSenhaCriptografada() {
	return senhaCriptografada;
}

public void setSenhaCriptografada(String senhaCriptografada) {
	this.senhaCriptografada = senhaCriptografada;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

}

--------------------------------------autentica bean
package br.stefanini.projetopausa.bean;

import java.io.IOException;

import javax.annotation.PostConstruct;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

import org.omnifaces.util.Faces;
import org.omnifaces.util.Messages;

import br.stefanini.projetopausa.dao.UsuarioDAO;
import br.stefanini.projetopausa.domain.Usuario;

@ManagedBean
@SessionScoped
public class AutenticacaoBean {

private Usuario usuarioLogado;

private Usuario usuario;

public Usuario getUsuario() {
	return usuario;
}

public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}

@PostConstruct
public void novo() {
	usuario = new Usuario();
}

public Usuario getUsuarioLogado() {
	return usuarioLogado;
}

public void setUsuarioLogado(Usuario usuarioLogado) {
	this.usuarioLogado = usuarioLogado;
}

public void autenticar() {

	try {
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		usuarioLogado = usuarioDAO.autenticar(usuario.getSenha(), usuario.getMatricula());

		if (usuarioLogado == null) {
			Messages.addGlobalError("Matricula ou senha incorretos");
			return;
		}

		Faces.redirect("./pages/telaSecundariaPausa.xhtml");
	} catch (IOException e) {
		e.printStackTrace();
		Messages.addGlobalError(e.getMessage());
	}
}

}

-----------------------------------usuarioDao
package br.stefanini.projetopausa.dao;

import java.util.List;

import org.apache.shiro.crypto.hash.SimpleHash;

import org.hibernate.Criteria;

import org.hibernate.Session;

import org.hibernate.Transaction;

import org.hibernate.criterion.Restrictions;

import br.stefanini.projetopausa.domain.Usuario;
import br.stefanini.projetopausa.util.HibernateUtil;

public class UsuarioDAO {

public void salvar(Usuario usuario) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	Transaction transacao = null;

	try {
		transacao = sessao.beginTransaction();
		sessao.save(usuario);
		transacao.commit();
	} catch (RuntimeException erro) {
		if (transacao != null) {
			transacao.rollback();
		}
		throw erro;
	} finally {
		sessao.close();
	}
}

@SuppressWarnings("unchecked")
public List<Usuario> listar() {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	try {
		Criteria consulta = sessao.createCriteria(Usuario.class);
		List<Usuario> resultado = consulta.list();
		return resultado;
	} catch (RuntimeException erro) {
		throw erro;
	} finally {
		sessao.close();
	}
}

// @SuppressWarnings("unchecked")
public Usuario buscar(String matricula) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	try {
		Criteria consulta = sessao.createCriteria(Usuario.class);
		consulta.add(Restrictions.idEq(matricula));
		Usuario resultado = (Usuario) consulta.uniqueResult();
		return resultado;
	} catch (RuntimeException erro) {
		throw erro;
	} finally {
		sessao.close();
	}
}

public void excluir(Usuario usuario) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	Transaction transacao = null;

	try {
		transacao = sessao.beginTransaction();
		sessao.delete(usuario);
		transacao.commit();
	} catch (RuntimeException erro) {
		if (transacao != null) {
			transacao.rollback();
		}
		throw erro;
	} finally {
		sessao.close();
	}
}

public void editar(Usuario usuario) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	Transaction transacao = null;

	try {
		transacao = sessao.beginTransaction();
		sessao.update(usuario);
		transacao.commit();
	} catch (RuntimeException erro) {
		if (transacao != null) {
			transacao.rollback();
		}
		throw erro;
	} finally {
		sessao.close();
	}
}

public Usuario autenticar(String senha, String matricula) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();

	try {
		Criteria consulta = sessao.createCriteria(Usuario.class);
		
		consulta.add(Restrictions.eq("matricula", matricula));
		
		SimpleHash hash = new SimpleHash("md5", senha);
		consulta.add(Restrictions.eq("senha", hash.toHex()));
		
		
		Usuario resultado = (Usuario) consulta.uniqueResult();
		return resultado;
	} catch (RuntimeException erro) {
		throw erro;
	} finally {
		sessao.clear();
	}

}

}
---------------------segunda tela

<?xml version="1.0" encoding="UTF-8" ?> Tela de Pausas

<h:body>
<p:growl id=“mensagem” />
<h:form>

<p:graphicImage library="imagens" name="stefanini.jpg" width="180"
		styleClass="imagemCentralizada" />


	<p:menubar>
		<p:submenu label="#{autenticacaoBean.usuarioLogado.nome}">
			<p:menuitem value="Registrar pausa"
				oncomplete="PF('dlgPausa').show();" icon="ui-icon-pause" />
			<p:menuitem value="Editar cadastro"
				oncomplete="PF('dlgEditarCadastro').show();" icon="ui-icon-pencil"
				update=":mensagem" />
				
			<p:menuitem value="Atualizar" icon="ui-icon-refresh" />
			<p:menuitem value="Sobre" icon="ui-icon-info" />

		</p:submenu>

		<f:facet name="options">

			<p:commandButton type="button" value="Sair" icon="ui-icon-extlink" />

		</f:facet>

	</p:menubar>

	<p:dataTable value="#{usuarioBean.usuarios}" var="usuario">

		<p:column headerText="Usuário" sortBy="#{usuario.nome}"
			filterBy="#{usuario.nome}">
			<h:outputText value="#{usuario.nome}" />
		</p:column>

		<p:column headerText="Status" sortBy="#{usuario.status}">
			<h:outputText value="#{usuario.status}" />
		</p:column>


	</p:dataTable>


</h:form>


<!-- Dialogo de registrar Pausa -->
<p:dialog header="Registrar pausa" widgetVar="dlgPausa"
	draggable="false" resizable="false" modal="true">
	<h:form>

		<h:panelGrid>
			<p:inputText placeholder="Matricula" />
			<p:selectOneMenu>
				<f:selectItem itemValue="Pausa 10" itemLabel="Pausa 10" />
				<f:selectItem itemValue="Intervalo" itemLabel="Intervalo" />
			</p:selectOneMenu>
		</h:panelGrid>

	</h:form>
</p:dialog>

<!-- Dialogo de editar cadastro -->
<p:dialog header="Registrar pausa" widgetVar="dlgEditarCadastro"
	draggable="false" resizable="false" modal="true">
	<h:form>

		<h:panelGrid>
			<p:inputText placeholder="Matricula" />
			<p:selectOneMenu>
				<f:selectItem itemValue="Pausa 10" itemLabel="Pausa 10" />
				<f:selectItem itemValue="Intervalo" itemLabel="Intervalo" />
			</p:selectOneMenu>
		</h:panelGrid>

	</h:form>
</p:dialog>

</h:body>

vlw galera, por favor se possível e souberem que eu tentei de tudo desde as 22 horas de ontem.

Mike

Você não instancia o usuário em nenhum momento na hora do login

Cesar_Ryan

[quote=“Cesar_Ryan, post:57, topic:375320”]
<p:commandLink value="1ª Acesso"
oncomplete="PF(‘dlgCadastro’).show();“
actionListener=”#{usuarioBean.novo()}“
update=”:formCadastro:
[/.

Então tai o código em que eu chamo o método novo que estância a classe dentro do bean então como que não da certo? E o exemplo do YouTube da vídeo aula do Sérgio é do mesmo jeito e o dele da certo… tem algo a mais nisso??

Mike

Que eu saiba você quer logar e não ir pro primeiro acesso

Cesar_Ryan

então Mike quando ele clicar no primeiro acesso vai abrir um dialogo por cima da tela e nele eu vou gravar o usuario no banco de dados, que é o cadastro. só que ele ta retornando usuario nulo, pq o metodo novo do actionListener é como se ele nao existisse ou nao estivesse sido chamado, sendo que no video ele mostra da mesma forma e da certo… gostaria de ver o video para vc entender? pq se eu por ele como postconstruct blz ele funciona, só que eu nao quero ele como isso.

Cesar_Ryan

acabei resolvendo o problema de logar, mas foi pq refiz o código todo e deu certo, então nao achei o erro. porém estou com outro problema… como faço para pegar uma pessoa logada e fazer com que quando eu clicar no botão de registrar pausa ele troque o atributo status que por padrão deixei 0 ( false) ir para true?

pela aula do sergio to tentando primeiro pegar uma pessoa logada e exibir na tela pelo menos o nome para saber se funcionou que ai depois vou para a parte de implementar o metodo. Pode me ajudar?

segue o código da tela secundaria, que é a tela após a pessoa logar.

<?xml version="1.0" encoding="UTF-8" ?> Tela de Pausas

<h:body>
<p:growl id=“mensagem” />
<h:form>

<p:graphicImage library="imagens" name="stefanini.jpg" width="180"
		styleClass="imagemCentralizada" />

	<!-- Barra de menu do usuario -->
	<p:menubar>
		<p:submenu label="#{autenticacaoBean.usuarioLogado.nome}">
			<p:menuitem value="Registrar pausa"
				oncomplete="PF('dlgPausa').show();" icon="ui-icon-pause"
				actionListener="#{usuarioBean.excluir}" update=":mensagem">
				<f:attribute name="usuarioSelecionado" value="#{usuario}" />
			</p:menuitem>
			<p:menuitem value="Editar cadastro"
				oncomplete="PF('dlgEditarCadastro').show();" icon="ui-icon-pencil"
				update=":mensagem" />

			<p:menuitem value="Atualizar" icon="ui-icon-refresh" />
			<p:menuitem value="Sobre" icon="ui-icon-info" />

		</p:submenu>

		<f:facet name="options">

			<p:commandButton type="button" value="Sair" icon="ui-icon-extlink" />

		</f:facet>

	</p:menubar>
	<!-- Barra de menu do usuario -->

	<!-- Tabela de usuarios -->
	<p:dataTable value="#{usuarioBean.usuarios}" var="usuario">

		<p:column headerText="Usuário" sortBy="#{usuario.nome}"
			filterBy="#{usuario.nome}">
			<h:outputText value="#{usuario.nome}" />
		</p:column>

		<p:column headerText="Status" sortBy="#{usuario.status}">
			<h:outputText value="#{usuario.status}" />
		</p:column>


	</p:dataTable>
	<!-- Tabela de usuarios -->

</h:form>


<!-- Dialogo de registrar Pausa -->
<p:dialog header="Registrar pausa" widgetVar="dlgPausa"
	draggable="false" resizable="false" modal="true">
	<h:form>


		<p:inputText placeholder="Matricula" />
		<h:panelGrid columns="2">
			<p:selectOneMenu>
				<f:selectItem itemValue="Pausa 10" itemLabel="Pausa 10" />
				<f:selectItem itemValue="Intervalo" itemLabel="Intervalo" />
			</p:selectOneMenu>
			<p:commandButton icon="ui-icon-check" />
		</h:panelGrid>

	</h:form>
</p:dialog>

<!-- Dialogo de editar cadastro -->
<p:dialog header="Registrar pausa" widgetVar="dlgEditarCadastro"
	draggable="false" resizable="false" modal="true">
	<h:form>

		<h:panelGrid>
			<p:inputText placeholder="Matricula" />
			<p:selectOneMenu>
				<f:selectItem itemValue="Pausa 10" itemLabel="Pausa 10" />
				<f:selectItem itemValue="Intervalo" itemLabel="Intervalo" />
			</p:selectOneMenu>
		</h:panelGrid>

	</h:form>
</p:dialog>

</h:body>

código do usuarioBean…

package br.stefanini.projetopausa.bean;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.ViewScoped;

import javax.faces.event.ActionEvent;

import org.omnifaces.util.Messages;

import br.stefanini.projetopausa.dao.UsuarioDAO;
import br.stefanini.projetopausa.domain.Usuario;

@SuppressWarnings(serial)

@ManagedBean

@ViewScoped

public class UsuarioBean implements Serializable {
private Usuario usuario;
private List<Usuario> usuarios;

public Usuario getUsuario() {
	return usuario;
}

public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}

public List<Usuario> getUsuarios() {
	return usuarios;
}

public void setUsuarios(List<Usuario> usuarios) {
	this.usuarios = usuarios;
}

@PostConstruct
public void listar() {
	try {
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		usuarios = usuarioDAO.listar();
	} catch (RuntimeException erro) {
		Messages.addGlobalError("Ocorreu um erro ao tentar listar os usuarios");
		erro.printStackTrace();
	}

}

public void novo() {
	usuario = new Usuario();
}

public void salvar() {
	try {
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		usuarioDAO.salvar(usuario);

		novo();
		Messages.addFlashGlobalInfo("Usuario salvo com sucesso.");
	} catch (RuntimeException erro) {
		Messages.addGlobalError("Ocorreu um erro ao salvar o usuario.");
		erro.printStackTrace();
	}
}

public void excluir(ActionEvent evento) {
	usuario = (Usuario) evento.getComponent().getAttributes().get("usuarioSelecionado");
	Messages.addGlobalInfo("Nome"+ usuario.getNome());
}

}

videoaula do sergio para excluir o cadastro, mas é o mesmo principio para o meu metodo de registrar pausa ( eu acho )

obs: lembrando que o metodo ta com nome de excluir mais na vdd eu quero que ele registre a pausa, porém fiz igual o da aula para nao ter erro.

o log do console após apertar no menubar e escolher o menuItem Registrar pausa.

ADVERTÊNCIA: /pages/telaSecundariaPausa.xhtml @26,65 actionListener="#{usuarioBean.excluir}": java.lang.NullPointerException

javax.el.ELException: /pages/telaSecundariaPausa.xhtml @26,65 actionListener="#{usuarioBean.excluir}": java.lang.NullPointerException

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)

at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)

at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)

at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)

at javax.faces.component.UICommand.broadcast(UICommand.java:300)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.NullPointerException

at br.stefanini.projetopausa.bean.UsuarioBean.excluir(UsuarioBean.java:71)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.el.parser.AstValue.invoke(AstValue.java:247)

at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)

 31 more
set 27, 2018 12:28:37 AM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError

GRAVE: java.lang.NullPointerException

at br.stefanini.projetopausa.bean.UsuarioBean.excluir(UsuarioBean.java:71)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.el.parser.AstValue.invoke(AstValue.java:247)

at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)

at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)

at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)

at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)

at javax.faces.component.UICommand.broadcast(UICommand.java:300)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

o erro é de nullpointer exception no caso ele nao ta pegando o usuário logado, eu ja fiz o teste pegando a tela principal me logando e apertar no menu bar depois no menuItem e o erro é o mesmo.

Cesar_Ryan

Alguém pode me ajudar?

Criado 23 de setembro de 2018
Ultima resposta 28 de set. de 2018
Respostas 61
Participantes 3