[RESOLVIDO] Erro com EL (Expression Language) usando Spring [AJUDA POR FAVOR ! ]

Bom dia Pessoal,
Estou com um problema na hora de utilizar EL, ja faz 2 semanas que estou tentando resolver isso, mas nao estou conseguindo.
Bom o problema é o seguinte:

Tenho uma classe Controller, onde estou passando o meu model para a view.
Segue o codigo…

@RequestMapping("/listaEmpresa")
	public ModelAndView lista() {
		
		System.out.println("Executando Controller ListaEmpresa!");
		AcessoBD a = new AcessoBD();
		
		ConexaoBD c = new ConexaoBD();
		
		a.setStm(c.getStatement());
		ArrayList<String> listaDados = new ArrayList<String>();
		listaDados = a.selectSQL();
		
	return new ModelAndView("resposta","modelo",listaDados);
	}

Em seguida eu tento acessar os dados em uma pagina JSP.
Segue o codigo…

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

RESPOSTA

<c:forEach items="${modelo}" var="m">

	${m.cnpj_emp}

</c:forEach>

O codigo acima é onde mora o problema, quando tento acessar o modelo com EL, é lançado uma exceção.
Isso acontece somente quando estou especificando um campo, por exemplo o meu “cnpj_emp”.

Agora quando acesso o modelo, sem especificar campo algum, ele me traz todos os dados do banco, assim como
é exibido no codigo abaixo.

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

RESPOSTA

<c:forEach items="${modelo}" var="m">

	${m}

</c:forEach>

A exceção lançada quando estou especificando o modelo, é a seguinte:

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/resposta.jsp at line 7

4: 
5: <c:forEach items="${modelo}" var="m">
6: 
7: 	<c:out value="${m.cnpj_emp}"/>
8: 	
9: </c:forEach>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:239)
	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

javax.el.PropertyNotFoundException: Property 'cnpj_emp' not found on type java.lang.String
	javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214)
	javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:191)
	javax.el.BeanELResolver.property(BeanELResolver.java:300)
	javax.el.BeanELResolver.getValue(BeanELResolver.java:81)
	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	org.apache.el.parser.AstValue.getValue(AstValue.java:123)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:938)
	org.apache.jsp.WEB_002dINF.views.resposta_jsp._jspx_meth_c_005fout_005f0(resposta_jsp.java:130)
	org.apache.jsp.WEB_002dINF.views.resposta_jsp._jspx_meth_c_005fforEach_005f0(resposta_jsp.java:98)
	org.apache.jsp.WEB_002dINF.views.resposta_jsp._jspService(resposta_jsp.java:64)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:239)
	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Outro detalhe, eu tenho a minha classe Java Bean com os campos que desejo trabalhar.

package model;

public class Empresa {
	
	private String razao_social_emp;
	private String cnpj_emp;
	private String ie_emp;
	private String logradouro_emp;
	private String numero_emp;
	private String bairro_emp;
	private String cidade_emp;
	private String uf_emp;
	private String cep_emp;
	private String cod_mun_emp;
	private String telefone_emp;
	private String nat_juridica_emp;
	private String desc_nat_juridica_emp;
	private String cnae_emp;
	private String class_cnae_emp;
	private String rat_emp;
	private String fpas_emp;
	private String cbo_emp;
	private String fap_emp;
	private String nire_emp;
	private String data_abertura_emp;
	private String mes_base_sindicato_emp;
	private String tipo_empresa_emp;
	private String responsavel_emp;
	private String qualificacao_emp;
	private String funcionarios_emp;
	private String rais_emp;
	private String opt_simples_emp;
	private String tipo_irpj_emp;
	
	private String codigo_socio;
	private String nome_socio;
	private String data_admissao_socio;
	private String rg_socio;
	private String cpf_socio;
	private String pis_socio;
	private String data_nascimento_socio;
	private String endereco_socio;
	private String numero_socio;
	private String bairro_socio;
	private String cep_socio;
	private String cidade_socio;
	private String uf_socio;
	private String telefone_socio;
	private String email_socio;
	
	
	
	
	
	public String getRazao_social_emp() {
		return razao_social_emp;
	}
	public void setRazao_social_emp(String razao_social_emp) {
		this.razao_social_emp = razao_social_emp;
	}
	public String getCnpj_emp() {
		return cnpj_emp;
	}
	public void setCnpj_emp(String cnpj_emp) {
		this.cnpj_emp = cnpj_emp;
	}
	public String getIe_emp() {
		return ie_emp;
	}
	public void setIe_emp(String ie_emp) {
		this.ie_emp = ie_emp;
	}
	public String getLogradouro_emp() {
		return logradouro_emp;
	}
	public void setLogradouro_emp(String logradouro_emp) {
		this.logradouro_emp = logradouro_emp;
	}
	public String getNumero_emp() {
		return numero_emp;
	}
	public void setNumero_emp(String numero_emp) {
		this.numero_emp = numero_emp;
	}
	public String getBairro_emp() {
		return bairro_emp;
	}
	public void setBairro_emp(String bairro_emp) {
		this.bairro_emp = bairro_emp;
	}
	public String getCidade_emp() {
		return cidade_emp;
	}
	public void setCidade_emp(String cidade_emp) {
		this.cidade_emp = cidade_emp;
	}
	public String getUf_emp() {
		return uf_emp;
	}
	public void setUf_emp(String uf_emp) {
		this.uf_emp = uf_emp;
	}
	public String getCep_emp() {
		return cep_emp;
	}
	public void setCep_emp(String cep_emp) {
		this.cep_emp = cep_emp;
	}
	public String getCod_mun_emp() {
		return cod_mun_emp;
	}
	public void setCod_mun_emp(String cod_mun_emp) {
		this.cod_mun_emp = cod_mun_emp;
	}
	public String getTelefone_emp() {
		return telefone_emp;
	}
	public void setTelefone_emp(String telefone_emp) {
		this.telefone_emp = telefone_emp;
	}
	public String getNat_juridica_emp() {
		return nat_juridica_emp;
	}
	public void setNat_juridica_emp(String nat_juridica_emp) {
		this.nat_juridica_emp = nat_juridica_emp;
	}
	public String getDesc_nat_juridica_emp() {
		return desc_nat_juridica_emp;
	}
	public void setDesc_nat_juridica_emp(String desc_nat_juridica_emp) {
		this.desc_nat_juridica_emp = desc_nat_juridica_emp;
	}
	public String getCnae_emp() {
		return cnae_emp;
	}
	public void setCnae_emp(String cnae_emp) {
		this.cnae_emp = cnae_emp;
	}
	public String getClass_cnae_emp() {
		return class_cnae_emp;
	}
	public void setClass_cnae_emp(String class_cnae_emp) {
		this.class_cnae_emp = class_cnae_emp;
	}
	public String getRat_emp() {
		return rat_emp;
	}
	public void setRat_emp(String rat_emp) {
		this.rat_emp = rat_emp;
	}
	public String getFpas_emp() {
		return fpas_emp;
	}
	public void setFpas_emp(String fpas_emp) {
		this.fpas_emp = fpas_emp;
	}
	public String getCbo_emp() {
		return cbo_emp;
	}
	public void setCbo_emp(String cbo_emp) {
		this.cbo_emp = cbo_emp;
	}
	public String getFap_emp() {
		return fap_emp;
	}
	public void setFap_emp(String fap_emp) {
		this.fap_emp = fap_emp;
	}
	public String getNire_emp() {
		return nire_emp;
	}
	public void setNire_emp(String nire_emp) {
		this.nire_emp = nire_emp;
	}
	public String getData_abertura_emp() {
		return data_abertura_emp;
	}
	public void setData_abertura_emp(String data_abertura_emp) {
		this.data_abertura_emp = data_abertura_emp;
	}
	public String getMes_base_sindicato_emp() {
		return mes_base_sindicato_emp;
	}
	public void setMes_base_sindicato_emp(String mes_base_sindicato_emp) {
		this.mes_base_sindicato_emp = mes_base_sindicato_emp;
	}
	public String getTipo_empresa_emp() {
		return tipo_empresa_emp;
	}
	public void setTipo_empresa_emp(String tipo_empresa_emp) {
		this.tipo_empresa_emp = tipo_empresa_emp;
	}
	public String getResponsavel_emp() {
		return responsavel_emp;
	}
	public void setResponsavel_emp(String responsavel_emp) {
		this.responsavel_emp = responsavel_emp;
	}
	public String getQualificacao_emp() {
		return qualificacao_emp;
	}
	public void setQualificacao_emp(String qualificacao_emp) {
		this.qualificacao_emp = qualificacao_emp;
	}
	public String getFuncionarios_emp() {
		return funcionarios_emp;
	}
	public void setFuncionarios_emp(String funcionarios_emp) {
		this.funcionarios_emp = funcionarios_emp;
	}
	public String getRais_emp() {
		return rais_emp;
	}
	public void setRais_emp(String rais_emp) {
		this.rais_emp = rais_emp;
	}
	public String getOpt_simples_emp() {
		return opt_simples_emp;
	}
	public void setOpt_simples_emp(String opt_simples_emp) {
		this.opt_simples_emp = opt_simples_emp;
	}
	public String getTipo_irpj_emp() {
		return tipo_irpj_emp;
	}
	public void setTipo_irpj_emp(String tipo_irpj_emp) {
		this.tipo_irpj_emp = tipo_irpj_emp;
	}
	public String getCodigo_socio() {
		return codigo_socio;
	}
	public void setCodigo_socio(String codigo_socio) {
		this.codigo_socio = codigo_socio;
	}
	public String getNome_socio() {
		return nome_socio;
	}
	public void setNome_socio(String nome_socio) {
		this.nome_socio = nome_socio;
	}
	public String getData_admissao_socio() {
		return data_admissao_socio;
	}
	public void setData_admissao_socio(String data_admissao_socio) {
		this.data_admissao_socio = data_admissao_socio;
	}
	public String getRg_socio() {
		return rg_socio;
	}
	public void setRg_socio(String rg_socio) {
		this.rg_socio = rg_socio;
	}
	public String getCpf_socio() {
		return cpf_socio;
	}
	public void setCpf_socio(String cpf_socio) {
		this.cpf_socio = cpf_socio;
	}
	public String getPis_socio() {
		return pis_socio;
	}
	public void setPis_socio(String pis_socio) {
		this.pis_socio = pis_socio;
	}
	public String getData_nascimento_socio() {
		return data_nascimento_socio;
	}
	public void setData_nascimento_socio(String data_nascimento_socio) {
		this.data_nascimento_socio = data_nascimento_socio;
	}
	public String getEndereco_socio() {
		return endereco_socio;
	}
	public void setEndereco_socio(String endereco_socio) {
		this.endereco_socio = endereco_socio;
	}
	public String getNumero_socio() {
		return numero_socio;
	}
	public void setNumero_socio(String numero_socio) {
		this.numero_socio = numero_socio;
	}
	public String getBairro_socio() {
		return bairro_socio;
	}
	public void setBairro_socio(String bairro_socio) {
		this.bairro_socio = bairro_socio;
	}
	public String getCep_socio() {
		return cep_socio;
	}
	public void setCep_socio(String cep_socio) {
		this.cep_socio = cep_socio;
	}
	public String getCidade_socio() {
		return cidade_socio;
	}
	public void setCidade_socio(String cidade_socio) {
		this.cidade_socio = cidade_socio;
	}
	public String getUf_socio() {
		return uf_socio;
	}
	public void setUf_socio(String uf_socio) {
		this.uf_socio = uf_socio;
	}
	public String getTelefone_socio() {
		return telefone_socio;
	}
	public void setTelefone_socio(String telefone_socio) {
		this.telefone_socio = telefone_socio;
	}
	public String getEmail_socio() {
		return email_socio;
	}
	public void setEmail_socio(String email_socio) {
		this.email_socio = email_socio;
	}
	
}

Acredito que seja alguma coisa besta, mas nao estou conseguindo encontrar nada de errado.
Fico muito agradecido desde ja.
Obrigado!

Vamos começar, primeiro para um design legal na aplicação o controller não deveria fazer operações em banco de dados, estas deveriam estar em uma classe que implementasse ou o padrão DAO ou Repository.

Vamos resolver o erro de Runtime, sem a refatoração sugerida acima. O erro se dá porque você não está retornando um List , você está retornando um List.

Você deve instanciar uma Empresa para cada tupla retornada pelo SQL e setar as propriedades com cada valor, e ir adicionando em um List e depois retornar este List e não o List de resultado do sql.

Abçs,

Wilton.

Cara… sabia que era besteira ksks
Uma coisa que ja percebi… é que acabo viciando tanto na aplicação, e depois nao consigo localizar erros desse tipo.
Sempre que acontece isso, tenho que pedir ajuda a alguem que nao esta envolvido no desenvolvimento, e sempre da certo!

Muito obrigado.
Vlw mesmo… ajudo pra caramba… agora vou conseguir seguir com a aplicação…