lgweb
Janeiro 26, 2008, 8:55am
#1
Ola pessoal preciso de ajuda estou tendo um erro qdo tento salvar os dados no banco se alguem puder dar uma luz agradeço
javax.servlet.ServletException: #{clientes.cliente.novo}: org.apache.jasper.el.JspPropertyNotFoundException: /TCliente.jsp(12,3) '#{clientes.cliente.novo}' Target Unreachable, 'cliente' returned null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
a pagina abre normalmente mas qdo eu chamo o metodo “novo” ou salvar do managedbean ele da este erro.
se precisar eu posto o codigo valew abraços
O erro que está acontecendo é que quando ele tenta acessar #{clientes.cliente…} o cliente está nulo.
Instancie o seu objeto cliente na sua declaração ou no construtor do seu bean.
Testa aí.
lgweb
Janeiro 26, 2008, 9:35am
#3
o minha classe cliente ta assim:
package model;
import java.util.Date;
import java.util.Set;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.CascadeType;
import model.Contato;
@Entity @Table(name="cliente")
public class Cliente implements java.io.Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
//@GeneratedValue(strategy = GenerationType.native)
@Column(name="codigocliente")
private int codigo;
@OneToMany(mappedBy ="cliente",fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
@OrderBy("nome ASC")
private Set<Contato> contato;
private String nome;
private int cpf ;
private int rg;
private String banco;
private int conta;
private int agencia;
private int digito;
private String praca;
@Temporal(TemporalType.DATE)
private Date data=new Date();
private int fone;
private String rua;
private String bairro;
private int numero;
private String cidade;
private char uf;
private int cep;
private String email;
public Cliente(){}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getCpf() {
return cpf;
}
public void setCpf(int cpf) {
this.cpf = cpf;
}
public int getRg() {
return rg;
}
public void setRg(int rg) {
this.rg = rg;
}
public String getBanco() {
return banco;
}
public void setBanco(String banco) {
this.banco = banco;
}
public int getConta() {
return conta;
}
public void setConta(int conta) {
this.conta = conta;
}
public int getAgencia() {
return agencia;
}
public void setAgencia(int agencia) {
this.agencia = agencia;
}
public int getDigito() {
return digito;
}
public void setDigito(int digito) {
this.digito = digito;
}
public String getPraca() {
return praca;
}
public void setPraca(String praca) {
this.praca = praca;
}
public Date getDate() {
return data;
}
public void setDate(Date data) {
this.data = data;
}
public int getFone() {
return fone;
}
public void setFone(int fone) {
this.fone = fone;
}
public String getRua() {
return rua;
}
public void setRua(String rua) {
this.rua = rua;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public char getUf() {
return uf;
}
public void setUf(char uf) {
this.uf = uf;
}
public int getCep() {
return cep;
}
public void setCep(int cep) {
this.cep = cep;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Set<Contato> getContato() {
return contato;
}
public void setContato(Set<Contato> contato) {
contato = contato;
}
public Cliente(int codigo ,String nome, int cpf, int rg, String banco,
int conta, int agencia, int digito, String praca, Date date,
int fone, String rua, String bairro, int numero, String cidade,
char uf, int cep, String email) {
this.codigo = codigo;
this.nome = nome;
this.cpf = cpf;
this.rg = rg;
this.banco = banco;
this.conta = conta;
this.agencia = agencia;
this.digito = digito;
this.praca = praca;
this.data = date;
this.fone = fone;
this.rua = rua;
this.bairro = bairro;
this.numero = numero;
this.cidade = cidade;
this.uf = uf;
this.cep = cep;
this.email = email;
}
}
e o controle assim:
package control;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import model.Cliente;
import daoCliente.IDaoCliente;
import daoCliente.daoCliente;
public class ControlClientes {
private DataModel model;
private Cliente cliente=new Cliente();
public String novo() {
cliente = new Cliente();
return "novo";
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public DataModel getTodos() {
IDaoCliente ldao = new daoCliente();
model = new ListDataModel(ldao.todosClientes());
return model;
}
public Cliente getClienteFromEditOrDelete() {
Cliente cliente = (Cliente) model.getRowData();
return cliente;
}
public String editar() {
Cliente cliente = getClienteFromEditOrDelete();
setCliente(cliente);
return "editar";
}
public String update() {
IDaoCliente ldao = new daoCliente();
ldao.atualizar(cliente);
return "sucesso";
}
public String excluir() {
IDaoCliente ldao = new daoCliente();
Cliente cliente = getClienteFromEditOrDelete();
ldao.excluir(cliente);
return "sucesso";
}
public String create() {
IDaoCliente ldao = new daoCliente();
ldao.salvar(cliente);
return "sucesso_inc";
}
// adicionar os itens abaixo como extras
private String keysearch;
public String getKeysearch() {
return keysearch;
}
public void setKeysearch(String keysearch) {
this.keysearch = keysearch;
}
public DataModel getBuscarCliente() {
IDaoCliente idao = new daoCliente();
model = new ListDataModel(idao.consultarCliente(keysearch));
return model;
}
public DataModel getTodosComNome() {
IDaoCliente idao = new daoCliente();
model = new ListDataModel(idao.todosClientes());
return model;
}
public javax.faces.model.DataModel getModel() {
return model;
}
public void setModel(javax.faces.model.DataModel model) {
this.model = model;
}
}
se vc puder ajudar eu agradeco pois ja fuceio no google e aqui no guj tbm mas nada resolveu ainda abraços.
Posta o seu jsp e o seu faces-config.
lgweb
Janeiro 26, 2008, 9:44am
#5
.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>
<html>
<head>
<title></title>
<link rel="StyleSheet" type="text/css" href="css/tabelas.css" media="screen" >
</head>
<body>
<f:view>
<h:form>
<rich:panel
onmouseover="document.getElementById(this.id+'_header').style.background='#60BA01';document.getElementById(this.id+'_body').style.background='#F4FFF8'"
onmouseout="document.getElementById(this.id+'_header').style.background='#4C9600';document.getElementById(this.id+'_body').style.background='#E4FFC8'"
style=" width : 1036px;" headerClass="head2" bodyClass="body3">
<f:facet name="header">
<h:outputText value="Cadastro de Clientes"></h:outputText>
</f:facet>
<h:panelGrid columns="2" width="993">
<h:outputText value="Codigo"></h:outputText>
<h:inputText value="#{clientes.cliente.codigo}" style=" width : 93px;"></h:inputText>
<h:outputText value="Nome"></h:outputText>
<h:inputText value="#{clientes.cliente.nome}" style=" width : 169px;"></h:inputText>
<h:outputText value="Cpf" id="cpf"></h:outputText>
<h:panelGroup>
<h:inputText value="#{clientes.cliente.cpf}" style=" width : 91px;"></h:inputText>
<h:message for="cpf"></h:message>
</h:panelGroup>
<h:outputText value="Rg"></h:outputText>
<h:panelGroup>
<h:inputText value="#{clientes.cliente.rg}" required="true" style=" width : 87px;" id="rg"></h:inputText>
<h:message for="rg"></h:message>
</h:panelGroup>
</h:panelGrid>
<rich:panelBar height="280" width="1023">
<rich:panelBarItem label="Dados Bancários">
<h:panelGrid columns="2" width="994">
<h:outputText value="Banco"></h:outputText>
<h:panelGroup>
<h:inputText value="#{clientes.cliente.banco}" id="banco" required="true" style=" width : 365px;"></h:inputText>
<h:message for="banco"></h:message>
<h:outputText value="Agencia"></h:outputText>
<h:inputText value="#{clientes.cliente.agencia}" id="agencia" required="true" style=" width : 77px;"></h:inputText>
<h:message for="agencia"></h:message>
</h:panelGroup>
<h:outputText value="Conta"></h:outputText>
<h:panelGroup>
<h:inputText value="#{clientes.cliente.conta}" style=" width : 363px;"></h:inputText>
<h:outputText value="Digito"></h:outputText>
<h:inputText value="#{clientes.cliente.digito}" style=" width : 167px;"></h:inputText>
</h:panelGroup>
<h:outputText value="Praça"></h:outputText>
<h:inputText value="#{clientes.cliente.praca}"></h:inputText>
<h:outputText value="Data"></h:outputText>
<rich:calendar
datePattern="dd/M/yy" style=" width : 141px;" value="#{clientes.cliente.data}">
</rich:calendar>
<h:outputText value="Fone"></h:outputText>
<h:inputText value="#{clientes.cliente.fone}"></h:inputText>
</h:panelGrid>
</rich:panelBarItem>
<rich:panelBarItem label="Endereço Comercial">
<h:panelGrid columns="2" width="967">
<h:outputText value="Rua"></h:outputText>
<h:panelGroup>
<h:inputText value="#{clientes.cliente.rua}" id="rua" required="true" style=" width : 365px;"></h:inputText>
<h:message for="rua"></h:message>
<h:outputText value="Nº"></h:outputText>
<h:inputText value="#{clientes.cliente.numero}" id="n" required="true" style=" width : 77px;"></h:inputText>
<h:message for="n"></h:message>
</h:panelGroup>
<h:outputText value="Bairro"></h:outputText>
<h:inputText value="#{clientes.cliente.bairro}" style=" width : 363px;"></h:inputText>
<h:outputText value="Cidade"></h:outputText>
<h:inputText value="#{clientes.cliente.cidade}" style=" width : 362px;"></h:inputText>
<h:outputText value="Estado"></h:outputText>
<h:selectOneMenu value="#{clientes.cliente.uf}" style=" width : 114px;">
<f:selectItem itemValue="PR" itemLabel="Parana"/>
</h:selectOneMenu>
<h:outputText value="Cep"></h:outputText>
<h:inputText value="#{clientes.cliente.cep}" style=" width : 111px;"></h:inputText>
<h:outputText value="email"></h:outputText>
<h:inputText value="#{clientes.cliente.email}" style=" width : 367px;"></h:inputText>
</h:panelGrid>
</rich:panelBarItem>
</rich:panelBar>
<h:commandButton action="#{clientes.novo}" value="Novo"></h:commandButton>
<h:commandButton action="#{clientes.create}" value="Salvar"></h:commandButton>
<rich:datascroller align="center" for="tbclientes" maxPages="20" style=" width : 900px;"/>
<rich:spacer height="10" />
<rich:dataTable width="200" id="tbclientes" rows="5" columnClasses="primeiro,ultimo"
value="#{contato.model}" var="contatos" style=" height : 141px; width : 900px;">
<f:facet name="header">
<rich:columnGroup>
<h:column>
<h:outputText styleClass="headerText" value="Codigo" />
</h:column>
<h:column>
<h:outputText styleClass="headerText" value="Nome" />
</h:column>
<h:column>
<h:outputText styleClass="headerText" value="Sobrenome" />
</h:column>
<h:column>
<h:outputText styleClass="headerText" value="Setor" />
</h:column>
<h:column>
<h:outputText styleClass="headerText" value="Fone" />
</h:column>
<h:column>
<h:outputText styleClass="headerText" value="Ramal" />
</h:column>
<h:column>
<h:outputText styleClass="headerText" value="Email" />
</h:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{contatos.codigo}" />
</h:column>
<h:column>
<h:outputText value="#{contatos.contato.nome}" />
</h:column>
<h:column>
<h:outputText value="#{contatos.sobrenome}" />
</h:column>
<h:column>
<h:outputText value="#{contatos.setor}" />
</h:column>
<h:column>
<h:outputText value="#{contatos.fone}" />
</h:column>
<h:column>
<h:outputText value="#{contatos.ramal}" />
</h:column>
<h:column>
<h:outputText value="#{contatos.email}" />
</h:column>
<h:commandLink action="#{clientes.todos}" value="Listar"></h:commandLink>
</rich:dataTable>
</rich:panel>
</h:form>
</f:view>
</body>
</html>
faces-config.xlm
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
<managed-bean>
<managed-bean-name>clientes</managed-bean-name>
<managed-bean-class>control.ControlClientes</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>contato</managed-bean-name>
<managed-bean-class>control.ControlContato</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/FCliente.jsp</from-view-id>
<navigation-case>
<from-outcome>novo</from-outcome>
<to-view-id>/FCliente.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/TCliente.jsp</from-view-id>
<navigation-case>
<from-outcome>novo</from-outcome>
<to-view-id>/FCliente.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
por exemplo eu ja tentei chamar o metodo novo de uma pagina e dai direcionar para o cadastro mas da erro tentei xamar o metodo novo tbm da propria pg cliente e reixibir ela mas tbm nao deu parece que ele nao instacia o cliente de jeito nenhum valew
Vc postou a classe java, posta o seu jsp.
lgweb
Janeiro 26, 2008, 9:57am
#7
putz foi mal e q este erro ta me deixando meio doido rsrsrs, ta ai em cima eu editei a msg valew
Pelo que entendi, o erro acontece quando vc clica no botao “novo”.
Pergunta:
Quando vc debuga ele chega a entrar no metodo "public String novo() { " do seu ControlClientes?
Debuga e diga exatamente quando acontece o erro.
lgweb
Janeiro 26, 2008, 10:09am
#9
Problema:… grande problema
nao sei debugar to usando o redhat
lgweb
Janeiro 26, 2008, 10:15am
#10
olha so reiniciei a ide rodei o ant e agora ele ta me dando outro erro:
javax.servlet.ServletException: javax.faces.el.PropertyNotFoundException: javax.el.PropertyNotFoundException: Property 'data' not found on type model.Cliente
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
Aparentemente não encontrei nenhum erro explícito.
Seria interessante debugar para vermos qual o momento do erro.
Dá uma olhada no menu da ferramenta que deve ter a opção de debug.
lgweb
Janeiro 26, 2008, 10:48am
#12
maurenginaldo realmente nao tinha problemas mesmo eu executei o ant e reiniciei o servidor ,e deu problema na data fiz o seguinte
retirei o campo data do modelo e tirei o rich:calenadr da pg aew funfo blz os metodos, mas e agora , eu preciso da data no meu form como se faz, esta correto a maneira que eu fiz no meu model ai acima ?
No mais mto obrigado pela ajuda amigo se nao fosse vc nao teria conseguido valew .
olha nunca usei o rich:calendar mas não seria o caso de você criar um atributo no seu back bean do tipo String para pegar a data e depois fazer a conversão e adicionar no teu bean, pois eu acho que esse rich calendar deve retorna uma String ou usar uma classe Converter para fazer isso
lgweb
Janeiro 26, 2008, 11:14am
#14
pera ai entao eu tenho que criar outra classe um backingbean so para validar ou onde faço esta validação?
lgweb
Janeiro 26, 2008, 11:18am
#15
outra coisa q tbm pretendo fazer e qdo eu clicar em um link no cadastro de clientes ele passar um parametro para o metodo getTodos que retorna tds contatos do banco isso eu consegui fazer mas na verdade eu quero retornar somente contatos de um determinado cliente que eu vou passar por parametro alguem tem uma ideia de como se faz isso?
tipo tenta tenta primeiro criar um atributo no teu backbean “private String data;” cria o metodo get e set e tenta pegar dessa forma o valor da tela…
Comigo aconteceu algo parecido eu tinha um atributo byte[] na senha do usuario, eu estava ligando o meu atributo do bean usuario direto no atributo value do <h:inputSecret> e não dava certo, no meu caso fiz a classe Converter, mas tenta do jeito que eu te disse no começo primeiro
Eu já usei o rich:calendar e não precisa ser String, inclusive tem que ser um objeto da clase java.util.Date.
Usei assim:
<rich:calendar id="data" value="#{bean.data}" popup="true" datePattern="dd/MM/yyyy" />
Tive alguns problemas com o rich:calendar mas eram configurações do web.xml.
Segue um exemplo de web.xml, faça modificações no seu e veja se é isso.
[code]<?xml version="1.0" encoding="UTF-8"?>
Controle Custo
com.sun.faces.verifyObjects
false
com.sun.faces.validateXml
true
javax.faces.STATE_SAVING_METHOD
server
org.richfaces.SKIN
blueSky
RichFaces Filter
richfaces
org.ajax4jsf.Filter
richfaces
Faces Servlet
REQUEST
FORWARD
INCLUDE
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<!-- Extensions Filter -->
<filter>
<filter-name>extensionsFilter</filter-name>
<filter-class>
org.apache.myfaces.component.html.util.ExtensionsFilter
</filter-class>
<init-param>
<param-name>uploadMaxFileSize</param-name>
<param-value>100m</param-value>
</init-param>
<init-param>
<param-name>uploadThresholdSize</param-name>
<param-value>100k</param-value>
</init-param>
</filter>
<!-- Filter Mappings -->
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>/faces/*</url-pattern>
</filter-mapping>
<!-- extension mapping for serving page-independent resources (javascript, stylesheets, images, etc.) -->
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
[/code]
putz melhor ainda, porque é chato ficar convertendo
[quote=lgweb]Ola pessoal preciso de ajuda estou tendo um erro qdo tento salvar os dados no banco se alguem puder dar uma luz agradeço
javax.servlet.ServletException: #{clientes.cliente.novo}: org.apache.jasper.el.JspPropertyNotFoundException: /TCliente.jsp(12,3) '#{clientes.cliente.novo}' Target Unreachable, 'cliente' returned null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
a pagina abre normalmente mas qdo eu chamo o metodo “novo” ou salvar do managedbean ele da este erro.
se precisar eu posto o codigo valew abraços[/quote]
Cara, Este mesmo erro está me infernizando
org.apache.jasper.el.JspPropertyNotFoundException
só que resolvi de outra forma:
Eu tinha uma tabela em JSF puxando dados da tabela no db com 3 campos.
fiz a inserção de mais um campo na tabela, populei este novo campo diretamete no mysql e abri novamente a pagina na IDE, o que não resolveu.
Então resolvi atualizar a IDE para a versão mais nova e funcionou.
não sei até quando, mas funcionou !!
IDE Utilizada - NB - 61
IDE Nova - NB - 65M1 - Em Testes.