Boa noite a todos.
Estou precisando de um help para a minha aplicação… Esse é um cadastro de usuarios que estou tentando desenvolver aqui. Está aparecendo o seguinte erro:
java.lang.ClassCastException: java.lang.String cannot be cast to videoconferencia.usuarioSetor.UsuarioSetor
at videoconferencia.web.converter.UsuarioSetorConverter.getAsString(UsuarioSetorConverter.java:27)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:519)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:534)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:792)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:844)
at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:298)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:110)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:98)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:95)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:55)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:36)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:106)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:150)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at videoconferencia.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1813)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Aqui está a minha pagina xhtml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Usuarios</title>
<h:outputStylesheet name="estilo.css" library="css" />
</h:head>
<h:body>
<div id="topo">
VideoConferencia
<div id="logo_topo"></div>
</div>
<div id="total_cad">
<h2>Cadastro de Usuários</h2>
<h:form id="cadastro">
<span class="error"><h:messages /></span>
<h:inputHidden value="#{usuarioBean.usuario.codigo}" />
<h:inputHidden value="#{usuarioBean.usuario.ativo}" />
<h:inputHidden value="#{usuarioBean.destinoSalvar}" />
<h:panelGrid columns="2">
<h:outputLabel value="Nome" for="nome" />
<h:inputText id="nome" label="nome"
value="#{usuarioBean.usuario.nome}" size="30" maxlength="30"
required="true" requiredMessage="Você não tem nome?">
<f:validateLength minimum="10" maximum="30" />
</h:inputText>
<h:outputLabel value="Data de Nascimento" for="data" />
<h:inputText id="data" label="Data Nascimento"
value="#{usuarioBean.usuario.nascimento}" size="10" maxlength="10"
required="true">
<f:convertDateTime dateStyle="medium" />
</h:inputText>
<h:outputLabel value="Celular:" for="celular" />
<h:inputText id="celular" label="Celular"
value="#{usuarioBean.usuario.celular}" size="10" />
<h:outputLabel value="e-Mail:" for="email" />
<h:panelGroup>
<h:inputText id="email" label="email"
value="#{usuarioBean.usuario.email}" size="50" maxlength="50"
required="true" validatorMessage="e-mail invalido">
<f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+" />
</h:inputText>
<span class="error"><h:message for="email" /></span>
</h:panelGroup>
<h:outputLabel value="Idioma:" for="idioma" />
<h:selectOneMenu id="idioma" value="#{usuarioBean.usuario.idioma}">
<f:selectItem itemValue="pt_BR" itemLabel="Português" />
<f:selectItem itemValue="en_US" itemLabel="English" />
<f:selectItem itemValue="es_ES" itemLabel="Espanol" />
</h:selectOneMenu>
<h:outputLabel value="Setor:" for="setor" />
<h:selectOneMenu id="setor" value="#{usuarioBean.usuario.usuarioSetor}"
effect="fade" required="true" requiredMessage="Escolha um setor.">
<f:converter converterId="UsuarioSetorConverter"/>
<f:selectItem itemLabel="Selecione um setor" itemValue="" />
<f:selectItems var="setor" value="#{usuarioSetorBean.lista}"
itemValue="#{usuarioSetorBean.usuarioSetor.nome}"
itemLabel="#{setor.nome}"></f:selectItems>
</h:selectOneMenu>
<h:outputLabel value="Login:" for="login" />
<h:inputText id="login" label="login"
value="#{usuarioBean.usuario.login}" size="15" maxlength="15"
required="true"
validatorMessage="Login deve ter no mínimo 5 e no máxinmo 15 caracteres e só pode ter os simbolos '.' e '_'.">
<f:validateRegex pattern="([a-z]|[0-9]|[.]|[_]){5,15}" />
</h:inputText>
<h:outputLabel value="Senha:" for="senha" />
<h:inputSecret id="senha" label="Senha"
value="#{usuarioBean.usuario.senha}" size="10" maxlength="10"
required="true" redisplay="true" />
<h:outputLabel value="Confirmar Senha:" for="confirmarSenha" />
<h:inputSecret id="confirmarSenha" label="Confirmar Senha"
value="#{usuarioBean.confirmarSenha}" size="10" maxlength="10"
required="true" redisplay="true" />
</h:panelGrid>
<br />
<h:commandButton action="#{usuarioBean.salvar}" value="Salvar"
class="button" />
</h:form>
</div>
</h:body>
</html>
e aqui está o meu Usuario.java (POJO)
package videoconferencia.usuario;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;
import videoconferencia.usuarioSetor.UsuarioSetor;
@Entity
public class Usuario implements Serializable {
/**
*
*/
private static final long serialVersionUID = -8249564321087035043L;
@Id
@GeneratedValue
private Integer codigo;
private String nome;
private String email;
@org.hibernate.annotations.NaturalId
private String login;
private String senha;
@Temporal(javax.persistence.TemporalType.DATE)
private Date nascimento;
private String celular;
private String idioma;
private Boolean ativo;
@ManyToOne
@JoinColumn(name="usuariosetor_codigo")
@OnDelete(action=OnDeleteAction.NO_ACTION)
@ForeignKey(name="fk_usuario_usuariosetor")
private UsuarioSetor usuarioSetor;
@ElementCollection(targetClass=String.class)
@JoinTable(
name = "usuario_permissao",
uniqueConstraints = {@UniqueConstraint(columnNames={"usuario","permissao"})},
joinColumns=@JoinColumn(name="usuario"))
@Column(name="permissao",length=50)
private Set<String> permissao = new HashSet<String>();
public Integer getCodigo() {
return codigo;
}
public String getNome() {
return nome;
}
public String getEmail() {
return email;
}
public String getLogin() {
return login;
}
public String getSenha() {
return senha;
}
public Date getNascimento() {
return nascimento;
}
public String getCelular() {
return celular;
}
public String getIdioma() {
return idioma;
}
public Boolean getAtivo() {
return ativo;
}
public UsuarioSetor getUsuarioSetor() {
return usuarioSetor;
}
public Set<String> getPermissao() {
return permissao;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setEmail(String email) {
this.email = email;
}
public void setLogin(String login) {
this.login = login;
}
public void setSenha(String senha) {
this.senha = senha;
}
public void setNascimento(Date nascimento) {
this.nascimento = nascimento;
}
public void setCelular(String celular) {
this.celular = celular;
}
public void setIdioma(String idioma) {
this.idioma = idioma;
}
public void setAtivo(Boolean ativo) {
this.ativo = ativo;
}
public void setUsuarioSetor(UsuarioSetor usuarioSetor) {
this.usuarioSetor = usuarioSetor;
}
public void setPermissao(Set<String> permissao) {
this.permissao = permissao;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((ativo == null) ? 0 : ativo.hashCode());
result = prime * result + ((celular == null) ? 0 : celular.hashCode());
result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
result = prime * result + ((email == null) ? 0 : email.hashCode());
result = prime * result + ((idioma == null) ? 0 : idioma.hashCode());
result = prime * result + ((login == null) ? 0 : login.hashCode());
result = prime * result
+ ((nascimento == null) ? 0 : nascimento.hashCode());
result = prime * result + ((nome == null) ? 0 : nome.hashCode());
result = prime * result
+ ((permissao == null) ? 0 : permissao.hashCode());
result = prime * result + ((senha == null) ? 0 : senha.hashCode());
result = prime * result
+ ((usuarioSetor == null) ? 0 : usuarioSetor.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Usuario other = (Usuario) obj;
if (ativo == null) {
if (other.ativo != null)
return false;
} else if (!ativo.equals(other.ativo))
return false;
if (celular == null) {
if (other.celular != null)
return false;
} else if (!celular.equals(other.celular))
return false;
if (codigo == null) {
if (other.codigo != null)
return false;
} else if (!codigo.equals(other.codigo))
return false;
if (email == null) {
if (other.email != null)
return false;
} else if (!email.equals(other.email))
return false;
if (idioma == null) {
if (other.idioma != null)
return false;
} else if (!idioma.equals(other.idioma))
return false;
if (login == null) {
if (other.login != null)
return false;
} else if (!login.equals(other.login))
return false;
if (nascimento == null) {
if (other.nascimento != null)
return false;
} else if (!nascimento.equals(other.nascimento))
return false;
if (nome == null) {
if (other.nome != null)
return false;
} else if (!nome.equals(other.nome))
return false;
if (permissao == null) {
if (other.permissao != null)
return false;
} else if (!permissao.equals(other.permissao))
return false;
if (senha == null) {
if (other.senha != null)
return false;
} else if (!senha.equals(other.senha))
return false;
if (usuarioSetor == null) {
if (other.usuarioSetor != null)
return false;
} else if (!usuarioSetor.equals(other.usuarioSetor))
return false;
return true;
}
}
e aqui meu UsuarioSetor.java (POJO)
package videoconferencia.usuarioSetor;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
@Entity
@Table(name="usuario_setor")
public class UsuarioSetor implements Serializable {
/**
*
*/
private static final long serialVersionUID = -8579534875822010558L;
@Id
@GeneratedValue
private Integer codigo;
private String nome;
@Temporal(javax.persistence.TemporalType.DATE)
private Date dtCriacao;
@Temporal(javax.persistence.TemporalType.DATE)
private Date dtModificacao;
public Date getDtCriacao() {
return dtCriacao;
}
public Date getDtModificacao() {
return dtModificacao;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
result = prime * result
+ ((dtCriacao == null) ? 0 : dtCriacao.hashCode());
result = prime * result
+ ((dtModificacao == null) ? 0 : dtModificacao.hashCode());
result = prime * result + ((nome == null) ? 0 : nome.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
UsuarioSetor other = (UsuarioSetor) obj;
if (codigo == null) {
if (other.codigo != null)
return false;
} else if (!codigo.equals(other.codigo))
return false;
if (dtCriacao == null) {
if (other.dtCriacao != null)
return false;
} else if (!dtCriacao.equals(other.dtCriacao))
return false;
if (dtModificacao == null) {
if (other.dtModificacao != null)
return false;
} else if (!dtModificacao.equals(other.dtModificacao))
return false;
if (nome == null) {
if (other.nome != null)
return false;
} else if (!nome.equals(other.nome))
return false;
return true;
}
public void setDtCriacao(Date dtCriacao) {
this.dtCriacao = dtCriacao;
}
public void setDtModificacao(Date dtModificacao) {
this.dtModificacao = dtModificacao;
}
public Integer getCodigo() {
return codigo;
}
public String getNome() {
return nome;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String toString() {
return "UsuarioSetor [codigo=" + codigo + ", nome=" + nome
+ ", dtCriacao=" + dtCriacao + ", dtModificacao="
+ dtModificacao + "]";
}
}
e por fim meu converter
package videoconferencia.web.converter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.*;
import videoconferencia.usuarioSetor.*;
@FacesConverter(forClass = UsuarioSetor.class, value= "UsuarioSetorConverter")
public class UsuarioSetorConverter implements Converter {
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value != null && value.trim().length() > 0){
Integer codigo = Integer.valueOf(value);
try{
UsuarioSetorRN usuarioSetorRN = new UsuarioSetorRN();
return usuarioSetorRN.carregar(codigo);
}catch(Exception e){
throw new ConverterException("Não foi possível encontrar o setor" + value + ". " +e.getMessage());
}
}
return null;
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
if(value !=null){
UsuarioSetor usuarioSetor = (UsuarioSetor) value;
return usuarioSetor.getCodigo().toString();
}
return null;
}
}
O que pode estar dando errado???
:lol: