E ai pessoal…tudo certo?
O negócio é o seguinte…estou mexendo em duas coisas. Uma classe que é meu bean chamada CombateBean (no faces-config.xml o nome do meu managed bean é forCombateBean) e tenho um xhtml com o nome de combate (combate.xhtml), certo?
abaixo vem os códigos…
classe CombateBean:
packagepck;privateSet<ForIdent5Combate>forIdent5Combates=newHashSet<ForIdent5Combate>();privateList<ForIdent5Combate>listaCombates=newArrayList<ForIdent5Combate>();privateintnumeroDeCombates;publicintgetNumeroDeCombates(){returnnumeroDeCombates;}publicvoidsetNumeroDeCombates(intnumeroDeCombates){this.numeroDeCombates=numeroDeCombates;}//conta o numero de combates que já foram feitos para a região que foi selecionada pelo usuariopublicintcontaCombates(){Identificador5ident5=(Identificador5)FacesContextUtil.getSessionBean("identificador5");numeroDeCombates=1;listaCombates.addAll(forIdent5Combates);for(inti=0;i<listaCombates.size();i++){if(listaCombates.get(i).getIdentificador5().getCodIdent5()==ident5.getCodIdent5()){numeroDeCombates=numeroDeCombates+1;}}numeroDeCombates=numeroDeCombates+1;returnnumeroDeCombates;}}
Caused by:
javax.el.PropertyNotFoundException - /pages/for/manutencao/combate.xhtml @237,79 value="#{forCombateBean.contaCombates}": Property ‘contaCombates’ not found on type pck.CombateBean
Porque não está sendo encontrado ‘contaCombates’?
Quando eu vou implementar o xhtml, exclusivamente a linha <h:outputText id=“combCombate” value="#{forCombateBean.???}" />, onde coloquei os pontos de interrogação é onde o eclipse me oferece opções de métodos, dentre eles o método contaCombates.
O que pode estar acontecendo? alguém pode me ajudar?
valeuuuuu!!
Muda o nome do método contaCombates para getContaCombates. O JSF procura as propriedadades usando métodos get.
C
caioroma7
cara, não deu certo não…ele continua não encontrando…vc teria mais alguma opção?
D
dsjbv
Vc trocou no xhtml também? Porque não é pra trocar. Na página tem que ficar <h:outputText id=“combCombate” value="#{forCombateBean.contaCombates}" /> e na classe o método tem que se chamar getContaCombates(). É assim que está?
C
caioroma7
Cara, desse modo que você disse o erro mudou…
Caused by:
java.lang.NullPointerException - /pages/for/manutencao/combate.xhtml @237,79 value="#{forCombateBean.contaCombates}": Error reading ‘contaCombates’ on type pck.CombateBean
ta dando erro na leitura do método
D
dsjbv
Bom, agora já está achando o método. Tenta debugar o método. Parece que está dando NullPointer no código do método.
Posta a stacktrace inteira do erro.
O erro está na linha 358 da classe CombateBean, dentro do método getContaCombates.
Posta esse linha.
C
caioroma7
linha 358:
if (listaCombates.get(i).getIdentificador5().getCodIdent5() == ident5.getCodIdent5())
D
dsjbv
Algum método chamado nessa linha está retornando null e ai quando vc tenta chamar o próximo método dá NullPointer. Ou ident5 é null.
Tira esse encadeamento de métodos e roda no debug para descobrir o que está ficando nulo.
C
caioroma7
o ident5 estava igual a null mesmo…
mudei o código…segue ele abaixo:
public int getContaCombates(){
UtilBean util = (UtilBean)FacesContextUtil.getSessionBean(UtilBean.BEAN_NAME);
numeroDeCombates = 0;
listaCombates.addAll(forIdent5Combates);
for (int i=0; i < listaCombates.size(); i++){
if (listaCombates.get(i).getIdentificador5().getCodIdent5() == util.getId5().getCodIdent5()){
numeroDeCombates = numeroDeCombates + 1;
}
}
numeroDeCombates = numeroDeCombates + 1;
return numeroDeCombates;
}
A primeira linha do método coloquei utilBean, pois é ele que manipula os indentificadores…Mas ainda está dando o mesmo erro de leitura do método…
D
dsjbv
Posta a stacktrace do erro que está dando agora.
C
caioroma7
Cara…resolvido o problema…o código ficou assim:
public int getContaCombates() throws ObjectNotFoundException{
UtilBean util = (UtilBean)FacesContextUtil.getSessionBean(UtilBean.BEAN_NAME);
numeroDeCombates = 0;
listaCombates = ForCombateController.listaCombates(ForIdent5Combate.class);
for (int i=0; i < listaCombates.size(); i++){
if (listaCombates.get(i).getIdentificador5().getCodIdent5() == util.getId5().getCodIdent5()){
numeroDeCombates = numeroDeCombates + 1;
}
}
numeroDeCombates = numeroDeCombates + 1;
return numeroDeCombates;
}
o listaCombates não estava sendo populado com a lista toda de combates…estava pegando apenas 1 combate…
agora o listaCombates ta sendo populado com todos os combates já feitos e verificando quando é igual ao novo combate que será feito!
pronto…RESOLVIDO!
Valeu cara, me ajudou muito!
S
silver00
Sei que o tópico é antigo, mas estou com o mesmo problema. Utilizo JSF 2.0 e JBOSS 5 AS. O Jboss já esta com as libs no JSF 2.
<htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"><h:head><title>CadastroeEmissãodeCertificado</title></h:head><h:body><p>Teste</p><h:form><h:messages></h:messages><h:panelGridcolumns="2"><h:outputLabelid="lblUsername"for="username"value="Username"></h:outputLabel><h:inputTextid="txtMatricula"value="#{addUserCertBean.addUserCert.username}"size="20"maxlength="10"required="true"requiredMessage="Nome de Usuário"></h:inputText><h:outputLabelid="lblPassword"for="password"value="Password"></h:outputLabel><h:inputSecretid="txtPassword"value="#{addUserCertBean.addUserCert.password}"size="20"maxlength="100"required="true"requiredMessage="Senha"></h:inputSecret><h:outputLabelid="lblCN"for="cn"value="Common Name"></h:outputLabel><h:inputTextid="txtCN"value="#{addUserCertBean.addUserCert.CN}"size="20"maxlength="50"required="true"requiredMessage="Nome completo"></h:inputText><h:outputLabelid="lblLocalidade"for="localidade"value="Localidade"></h:outputLabel><h:selectOneMenuid="ddlLocalidade"value="#{addUserCertBean.addUserCert.l}"><f:selectItemitemValue="Bragança Paulista"itemLabel="Bragança Paulista"/><f:selectItemitemValue="Piracaia"itemLabel="Piracaia"/><f:selectItemitemValue="Atibaia"itemLabel="Atibaia"/><f:selectItemitemValue="Bom Jesus dos Perdões"itemLabel="Bom Jesus dos Perdões"/><f:selectItemitemValue="Nazaré Paulista"itemLabel="Nazaré Paulista"/></h:selectOneMenu><h:outputLabelid="lblCampus"for="campus"value="Campus"></h:outputLabel><h:selectOneMenuid="ddlCampus"value="#{addUserCertBean.addUserCert.o}"><f:selectItemitemValue="Bragança Paulista"itemLabel="Bragança Paulista"/></h:selectOneMenu><h:outputLabelid="lblTipoUsuario"for="tipoUsuario"value="Tipo de Usuário"></h:outputLabel><h:selectOneMenuid="ddlTipoUsuario"value="#{addUserCertBean.addUserCert.ou}"><f:selectItemitemValue="Administrativo"itemLabel="Administrativo"/><f:selectItemitemValue="Aluno"itemLabel="Aluno"/><f:selectItemitemValue="Professor"itemLabel="Professor"/></h:selectOneMenu><h:outputLabelid="lblTokenType"for="tokenType"value="Tipo de Token"></h:outputLabel><h:selectOneMenuid="ddlTokenType"value="#{addUserCertBean.addUserCert.tokenType}"><f:selectItemitemValue="p12"itemLabel="#PKCS12"/></h:selectOneMenu><h:outputLabelid="lblEmail"for="email"value="Email"size="20"></h:outputLabel><h:inputTextid="txtEmail"value="#{addUserCertBean.addUserCert.e}"size="20"maxlength="50"required="true"requiredMessage="Nome completo"></h:inputText></h:panelGrid><h:panelGridcolumns="2"><h:commandButtonaction="#{addUserCertBean.cadastrar}"value="Cadastrar"></h:commandButton><h:commandButtonvalue="Voltar"></h:commandButton></h:panelGrid></h:form></h:body></html>