Boa tarde a todos(as)!
Estou aprendendo JSF + Maven + Primefaces, com o material disponível na internet. Dos diversos exercícios existentes eu fiz 6 que funcionaram muito bem, porém o sétimo está dando um erro que não consigo resolver.
Procurei por erro semelhante em diversos fóruns, os quais deram diversas orientações, mas nenhuma funcionou.
Se alguém puder ajudar, de antemão deixo aqui meus agradecimentos!
O erro é o seguinte:
`nov 20, 2016 5:09:42 PM com.sun.faces.lifecycle.ProcessValidationsPhase execute
WARNING: /PerfilUsuario.xhtml @16,78 value="#{perfilUsuarioBean.nome}": Target Unreachable, identifier 'perfilUsuarioBean' resolved to null
javax.el.PropertyNotFoundException: /PerfilUsuario.xhtml @16,78 value="#{perfilUsuarioBean.nome}": Target Unreachable, identifier 'perfilUsuarioBean' resolved to null
at com.sun.faces.facelets.el.TagValueExpression.getType(Unknown Source)
at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:146)
at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:175)
at javax.faces.component.UIInput.getConvertedValue(Unknown Source)
at javax.faces.component.UIInput.validate(Unknown Source)
at javax.faces.component.UIInput.executeValidate(Unknown Source)
at javax.faces.component.UIInput.processValidators(Unknown Source)
at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
at javax.faces.component.UIForm.processValidators(Unknown Source)
at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
at javax.faces.component.UIViewRoot.processValidators(Unknown Source)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(Unknown Source)
at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
at javax.faces.webapp.FacesServlet.service(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'perfilUsuarioBean' resolved to null
at org.apache.el.parser.AstValue.getTarget(AstValue.java:74)
at org.apache.el.parser.AstValue.getType(AstValue.java:58)
at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:168)
... 38 more
nov 20, 2016 5:09:42 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
SEVERE: javax.el.PropertyNotFoundException: /PerfilUsuario.xhtml @16,78 value="#{perfilUsuarioBean.nome}": Target Unreachable, identifier 'perfilUsuarioBean' resolved to null
at com.sun.faces.facelets.el.TagValueExpression.getType(Unknown Source)
at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:146)
at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:175)
at javax.faces.component.UIInput.getConvertedValue(Unknown Source)
at javax.faces.component.UIInput.validate(Unknown Source)
at javax.faces.component.UIInput.executeValidate(Unknown Source)
at javax.faces.component.UIInput.processValidators(Unknown Source)
at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
at javax.faces.component.UIForm.processValidators(Unknown Source)
at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
at javax.faces.component.UIViewRoot.processValidators(Unknown Source)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(Unknown Source)
at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
at javax.faces.webapp.FacesServlet.service(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'perfilUsuarioBean' resolved to null
at org.apache.el.parser.AstValue.getTarget(AstValue.java:74)
at org.apache.el.parser.AstValue.getType(AstValue.java:58)
at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:168)
... 38 more`
Seguem os arquivo de configuração do projeto:
POM.xml:
`<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.algaworks</groupId>
<artifactId>C_02_07_InputTextArea2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.2.9</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>6.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>`
web.xml:
` <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>C_02_07_InputTextArea2</display-name>
<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>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>`
faces-config.xml:
`<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
</faces-config>
`
E agora os arquivos de código-fonte:
PerfilUsuarioBean.java:
`
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@ViewScoped
public class PerfilUsuarioBean implements Serializable {
private static final long serialVersionUID = 1L;
private String nome;
private String sobre;
public void atualizar() {
System.out.println("Sobre: " + this.sobre);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Perfil atualizado!"));
}
public List<String> completarTexto(String consulta) {
List<String> resultados = new ArrayList<String>();
if (consulta.startsWith("Thi")) {
resultados.add("Thiago");
resultados.add("Thiago Faria");
resultados.add("Thiago Faria de Andrade");
resultados.add("Thiago da Algaworks");
}
return resultados;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobre() {
return sobre;
}
public void setSobre(String sobre) {
this.sobre = sobre;
}
}`
PerfilUsuario.xhtml:
`<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</h:head>
<h:body>
<h:form id="frm">
<p:messages />
<p:panelGrid columns="2">
<p:outputLabel value="Nome" for="nome"/>
<p:inputText id="nome" required="true" value="#{perfilUsuarioBean.nome}"/>
<p:outputLabel value="Sobre você" for="sobre" />
<h:panelGroup>
<p:inputTextarea id="sobre" value="#{perfilUsuarioBean.sobre}"
cols="40" rows="4"
autoResize="true" maxlength="160" counter="contador"
counterTemplate="Restam {0} caracteres" />
<br/>
<h:outputText id="contador" />
</h:panelGroup>
</p:panelGrid>
<p:commandButton value="Atualizar" action="#{perfilUsuarioBean.atualizar}" update="@form"/>
</h:form>
</h:body>
</html>`
Nos fóruns que consultei antes de postar esta dúvida, foi sugerido:
-
ao invés de
@MangedBean
colocar@ManagedBean(name="perfilUsuarioBean")
mas isto também não funcionou; -
sugeriram também mudar de
@ViewScoped
para@SessionScoped
mas também não funcionou; -
isto dentre outros diversos palpites que tentei mas não me recordo de todos.
Bom, acho que é isto!
Se alguém puder ajudar, mais uma vez, muito obrigado!