Property not found in java.lang.string

1

Good afternoon, I have a web application and I want to return data to a jsp, but when I log in, it does not show anything on the screen (blank screen) and I get the following error:

    GRAVE: El Servlet.service() para servlet jsp lanzó una excepción
javax.el.PropertyNotFoundException: Propiedad 'FecPrestacion' no hallada en el tipo java.lang.String
    at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)
    at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)
    at javax.el.BeanELResolver.property(BeanELResolver.java:317)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
    at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
    at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)
    at org.apache.jsp.menuAnestesista_jsp._jspx_meth_fmt_005fformatDate_005f0(menuAnestesista_jsp.java:421)
    at org.apache.jsp.menuAnestesista_jsp._jspx_meth_c_005fforEach_005f0(menuAnestesista_jsp.java:326)
    at org.apache.jsp.menuAnestesista_jsp._jspService(menuAnestesista_jsp.java:180)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
    at servlet.LoginUsr.cargaAnestesista(LoginUsr.java:128)
    at servlet.LoginUsr.doPost(LoginUsr.java:103)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    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:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /menuAnestesista.jsp en línea 88

85:                     <c:forEach items="${requestScope.listadoAnestesia}" var="anestesia">
86:                         <tr>
87:                             <td>${i}</td>
88:                             <td><fmt:formatDate type="date" value = "${anestesia.FecPrestacion}" /></td>
89:                             <td><c:out value="${anestesia.fecARA}" default="---"></c:out></td>
90:                             <td><c:out value="${anestesia.fecRendicion}" default="---"></c:out></td>
91:                             <td><c:out value="${anestesia.afiliado()}"></c:out></td>


Stacktrace:
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
    at servlet.LoginUsr.cargaAnestesista(LoginUsr.java:128)
    at servlet.LoginUsr.doPost(LoginUsr.java:103)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    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:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.PropertyNotFoundException: Propiedad 'FecPrestacion' no hallada en el tipo java.lang.String
    at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)
    at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)
    at javax.el.BeanELResolver.property(BeanELResolver.java:317)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
    at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
    at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)
    at org.apache.jsp.menuAnestesista_jsp._jspx_meth_fmt_005fformatDate_005f0(menuAnestesista_jsp.java:421)
    at org.apache.jsp.menuAnestesista_jsp._jspx_meth_c_005fforEach_005f0(menuAnestesista_jsp.java:326)
    at org.apache.jsp.menuAnestesista_jsp._jspService(menuAnestesista_jsp.java:180)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    ... 35 more

Ultimately he tells me this:

Caused by: javax.el.PropertyNotFoundException: Propiedad 'FecPrestacion' no hallada en el tipo java.lang.String.

Thanks

I edit so I do not complicate it more than it is

<c:forEach items="${requestScope.listadoAnestesia}" var="anestesia">
                    <tr>
                        <td>${i}</td>
                        <td><fmt:formatDate type="date" value = "${anestesia.FecPrestacion}" /></td>
                        <td><c:out value="${anestesia.fecARA}" default="---"></c:out></td>
                        <td><c:out value="${anestesia.fecRendicion}" default="---"></c:out></td>
                        <td><c:out value="${anestesia.afiliado()}"></c:out></td>
                        <td><c:out value="${anestesia.nroAfiliado()}"></c:out></td>
                        <td><c:out value="${anestesia.osocial()}"></c:out></td>

The error is given to me in the first option I retrieve from the request

This is my class, it is a model from which I dump the data that I need to show so I do not complicate so much in the JSP, this data is added in the servlet that returns the data.

package entidades;

import java.io.Serializable;
import java.util.Date;

public class ModeloAnestesia implements Serializable{

    /* 
     * VARIABLES
     * ----------
     */
    private static final long serialVersionUID = 1L;
    private int idAnestesia, nroAfiliado, nroVias, nroTalon;
    private String afiliado, edad, usuario, medico, anestesista, sanatorio, osocial, tpoAnestesia;
    private Date fecPrestacion, fecARA, fecCarga, fecRendicion;
    private boolean nocturno, feriado, fds;

    /*
     * CONSTRUCTORES
     * -------------
     */
    public ModeloAnestesia() {}

    public ModeloAnestesia(int idAnestesia, Date fp, Date fa, Date fc, Date fr, String afiliado, int nroAfiliado,
            boolean nocturno, boolean feriado, boolean fds, int nroVias, String edad, String usuario, String medico,
            String anestesista, String sanatorio, String OS, String tpoAnestesia, int nroTalon){
        this.idAnestesia = idAnestesia;
        this.fecPrestacion = fp;
        this.fecARA = fa;
        this.fecCarga = fc;
        this.fecRendicion = fr;
        this.afiliado = afiliado;
        this.nroAfiliado = nroAfiliado;
        this.nocturno = nocturno;
        this.feriado = feriado;
        this.fds = fds;
        this.nroVias = nroVias;
        this.edad = edad;
        this.usuario = usuario;
        this.medico = medico;
        this.anestesista = anestesista;
        this.sanatorio = sanatorio;
        this.osocial = OS;
        this.tpoAnestesia = tpoAnestesia;
        this.nroTalon = nroTalon;
    }

    /*
     * METODOS
     * -------
    */
    public int getIdAnestesia() {
        return idAnestesia;
    }

    public void setIdAnestesia(int idAnestesia) {
        this.idAnestesia = idAnestesia;
    }

    public int getNroAfiliado() {
        return nroAfiliado;
    }

    public void setNroAfiliado(int nroAfiliado) {
        this.nroAfiliado = nroAfiliado;
    }

    public int getNroVias() {
        return nroVias;
    }

    public void setNroVias(int nroVias) {
        this.nroVias = nroVias;
    }

    public String getAfiliado() {
        return afiliado;
    }

    public void setAfiliado(String afiliado) {
        this.afiliado = afiliado;
    }

    public String getEdad() {
        return edad;
    }

    public void setEdad(String edad) {
        this.edad = edad;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getMedico() {
        return medico;
    }

    public void setMedico(String medico) {
        this.medico = medico;
    }

    public String getAnestesista() {
        return anestesista;
    }

    public void setAnestesista(String anestesista) {
        this.anestesista = anestesista;
    }

    public String getSanatorio() {
        return sanatorio;
    }

    public void setSanatorio(String sanatorio) {
        this.sanatorio = sanatorio;
    }

    public String getOsocial() {
        return osocial;
    }

    public void setOsocial(String osocial) {
        this.osocial = osocial;
    }

    public String getTpoAnestesia() {
        return tpoAnestesia;
    }

    public void setTpoAnestesia(String tpoAnestesia) {
        this.tpoAnestesia = tpoAnestesia;
    }

    public Date getFecPrestacion() {
        return fecPrestacion;
    }

    public void setFecPrestacion(Date fecPrestacion) {
        this.fecPrestacion = fecPrestacion;
    }

    public Date getFecARA() {
        return fecARA;
    }

    public void setFecARA(Date fecARA) {
        this.fecARA = fecARA;
    }

    public Date getFecCarga() {
        return fecCarga;
    }

    public void setFecCarga(Date fecCarga) {
        this.fecCarga = fecCarga;
    }

    public Date getFecRendicion() {
        return fecRendicion;
    }

    public void setFecRendicion(Date fecRendicion) {
        this.fecRendicion = fecRendicion;
    }

    public boolean isNocturno() {
        return nocturno;
    }

    public void setNocturno(boolean nocturno) {
        this.nocturno = nocturno;
    }

    public boolean isFeriado() {
        return feriado;
    }

    public void setFeriado(boolean feriado) {
        this.feriado = feriado;
    }

    public boolean isFds() {
        return fds;
    }

    public void setFds(boolean fds) {
        this.fds = fds;
    }

    public int getNroTalon(){
        return nroTalon;
    }

    public void setNroTalon(int nroTalon){
        this.nroTalon = nroTalon;
    }

}

I add the part of the servlet that retrieves my data.

// Metodo que instancia los listados que necesito mostrar al principio y me deriva a la pagina correspondiente
    private void cargaAnestesista(HttpServletRequest request, HttpServletResponse response){
        try {
            anestesias = cargarDatos(user);
            HttpSession session = request.getSession(true);
            request.setAttribute("anestesias", anestesias);
            request.getRequestDispatcher("menuAnestesista.jsp").forward(request, response);

        } catch (ServletException | IOException e) {
            e.printStackTrace();
        } 
    }


    private ArrayList<ModeloAnestesia> cargarDatos(Usuario u){
        //Instancio las variables que declare arriba
        ctrlAnestesia = new CtrlAnestesia();
        anestesista = new Anestesista();
        ctrlAnestesista = new CtrlAnestesista();
        ArrayList<Anestesia> listado = new ArrayList<>();
        ArrayList<ModeloAnestesia> modelos = new ArrayList<>();

        //Primero recupero los datos del anestesista
        anestesista = ctrlAnestesista.buscarAnestesista(u.getUser());//tengo que ver si lo voy a necesitar??

        /* Recupero los datos que voy a mostrar:
         * - Obra Social
         * - Medico
         * - Sanatorio
         * - TpoAnestesia
         * El resto de los valores los paso de la anestesia directamente
         */
        //Recupero las anestesias del anestesista activo.
        try {
            for(Anestesia a: ctrlAnestesia.listarAnestesia())
            {
                if(a.getUser() == u.getUser()){
                    listado.add(a);
                }
            }
        } catch (ApplicationException e) {
            e.printStackTrace();
        }
        //Recorro el listado de anestesias recuperados

        if(!listado.isEmpty()){
            for(Anestesia l:listado){
                modelos.add(cargaModelo(l));
            }
        }
        return modelos;
    }

    //Cargo la instancia del modelo que corresponde a la anestesia activa en el for de arriba
    private ModeloAnestesia cargaModelo(Anestesia l){
        modelo2 = new ModeloAnestesia();
        modelo2.setIdAnestesia(l.getIdAnestesia());
        modelo2.setFecPrestacion(l.getFecPrestacion());
        modelo2.setFecARA(l.getFecAra());
        modelo2.setFecRendicion(l.getFecRendicion());
        modelo2.setAfiliado(l.getAfiliado());
        modelo2.setNroAfiliado(l.getNroAfiliado());
        modelo2.setOsocial(cargaOS(l.getIdOS()));//Ejecuto el metodo para devolver el dato
        modelo2.setNocturno(cambiaTipo(l.getNocturno()));
        modelo2.setFeriado(cambiaTipo(l.getFeriado()));
        modelo2.setFds(cambiaTipo(l.getFds()));
        modelo2.setNroVias(l.getNroVias());
        modelo2.setEdad(l.getEdad());
        modelo2.setNroTalon(l.getNroTalon());
        modelo2.setMedico(cargaMedico(l.getIdMedico()));
        modelo2.setSanatorio(cargaSanatorio(l.getIdSanatorio()));
        modelo2.setTpoAnestesia(cargaTpoAnestesia(l.getIdTpoAnestesia()));
        modelo2.setUsuario(l.getUser());
        return modelo2;

    }
    
asked by Matias Allegranza 05.09.2017 в 22:45
source

1 answer

1

The error that is telling you is that anestesia is of type String , type that has no property or method " FecPrestacion ".

This seems to be happening because your listadoAnestesia does not contain a collection of your model ModeloAnestesia but of elements string ; the code you should share is how you generate that list.

EDIT

Additionally, viewing your model results in you having no property FecPrestacion but a private variable called fecPrestacion (with lower case at the beginning, Camell notation). This is that, in addition to not existing that property, the one that does exist is private so you can never access it from outside.

Try changing the code in the view so that you call the getters of your properties, like this:

<c:forEach items="${requestScope.listadoAnestesia}" var="anestesia">
    <tr>
        <td>${i}</td>
        <td><fmt:formatDate type="date" value = "${anestesia.getFecPrestacion()}" /></td>
        <td><c:out value="${anestesia.getFecARA()}" default="---"></c:out></td>
        <td><c:out value="${anestesia.getFecRendicion()}" default="---"></c:out></td>
        <td><c:out value="${anestesia.getAfiliado()}"></c:out></td>
        <td><c:out value="${anestesia.getNroAfiliado()}"></c:out></td>
        <td><c:out value="${anestesia.getOsocial()}"></c:out></td>
    </tr>
</c:forEach>

EDIT 2

According to this question , all you have to do is delete the " requestScope " on the label to the forEach (and ignore my edit previous):

<c:forEach items="${listadoAnestesia}" var="anestesia">
    <tr>
        <td>${i}</td>
        <td><fmt:formatDate type="date" value = "${anestesia.fecPrestacion}" /></td>
        <td><c:out value="${anestesia.fecARA}" default="---"></c:out></td>
        <td><c:out value="${anestesia.fecRendicion}" default="---"></c:out></td>
        <td><c:out value="${anestesia.afiliado}"></c:out></td>
        <td><c:out value="${anestesia.nroAfiliado}"></c:out></td>
        <td><c:out value="${anestesia.osocial}"></c:out></td>
    </tr>
</c:forEach>

but also consider that the attribute that you are defining in cargaAnestesista is "anesthesia" and in the jsp you iterate over "anesthesia list", you must use the same attribute name .

    
answered by 05.09.2017 / 23:10
source