Estoy estudiando en la universidad una asignatura basada en el desarrollo de alplicaciones web usando java servlets, tomcat, Model-view-controller, y un framework inventado por mi profe que es una simplificación de struts (usamos su .jar para implementar todas las classes de su framework y nos ha dicho que todo funciona correctamente y que no podemos modificar sus classes). Se ha inventado un lenguaje llamado VIEW.
Las páginas dinámicas acaban con el sufijo .view
Estoy haciendo una aplicación web en la que los usuarios se logean con un password en una base de datos postgresql (esto funciona bien) y reciben/envían mensajes a los otros usuarios registrados.
Uso eclipse y todo está bien compilado, sin errores y el.war desplegado en el tomcat correctamente.
Cuando un usuario se logea correctamente, el tomcat me envía una excepción y no me muestra la página dinámica que tocaría (mail.view).
Pongo el código de mail.view:
Código:
Me parece que el problema está en:<?xml version="1.0" encoding="ISO-8859-1"?> <v:view xmlns:v="http://soft0.upc.es:8080/web/NS/webfw/view" xmlns:b="/base.vlib" component-element-prefixes="b"> <HTML> <HEAD> <TITLE>Disseny d'aplicacions WEB: P3</TITLE> <LINk rel="stylesheet" href="styles.css" type="text/css"/> </HEAD> <BODY> <center> <table width="700" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <br/> <b:set var="srv" value="${request.session.getAttribute('message_srv')}"/> <b:if test="${not srv}"> <h1>ERROR</h1> <p><span style="color: #FF0000;">Session Error</span></p> <hr color="#1E90FF"/> <a HREF="index.html">Volver</a> </b:if> <b:if test="${srv}"> <H1>${srv.userName}</H1> <hr color="#1E90FF"/> <b:set var="recmess" value="${srv.receivedMessages()}"/> <b:if test="${not recmess}"> <H2>No hay mensajes recibidos</H2> </b:if> <b:if test="${recmess}"> <H2>Mensajes recibidos:</H2> <FORM METHOD="POST" ACTION="delete.do"> <!-- Lista de mensajes --> <table border="2" style="border-color: #1E90FF" cellspacing="1" align="center"> <tr> <td><font>remitente</font></td> <td><font>mensaje</font></td> <td><font>fecha</font></td> <td><font>eliminar</font></td> </tr> <b:for-each var="message" items="${srv.receivedMessages()}"> <tr> <td>${message.from}</td> <td><pre>${message.text}</pre></td> <td><pre>${message.date}</pre></td> <td><input type="checkbox" name="message_id" value="${message.id}"/></td> </tr> </b:for-each> </table> <p><INPUT TYPE="submit" NAME="delete" VALUE="Eliminar"/></p> </FORM> </b:if> <hr color="#1E90FF"/> <FORM METHOD="POST" ACTION="send.do"> <font>Destinatario/s:</font><br/> <select name="receiver" multiple="multiple"> <b:for-each var="user" items="${srv.userListToSend()}"> <option value="${user.name}">${user.name}</option>" </b:for-each> </select> <br/> <font>Mensaje:</font> <p><TEXTAREA NAME="message" ROWS="10" COLS="100"></TEXTAREA></p> <p><INPUT TYPE="submit" NAME="send" VALUE="Enviar"/></p> </FORM> <hr color="#1E90FF"/> <FORM METHOD="POST" ACTION="logout.do"> <p><INPUT TYPE="submit" VALUE="Logout"/></p> </FORM> </b:if> </td> </tr> </table> </center> </BODY> </HTML> </v:view>
<b:set var="srv" value="${request.session.getAttribute('message_srv ')}"/>
porque si pongo value="hola" me sale otra excepción (me dice que no lo cuadran todos los métodos que vienen después, como es lógico)
Alguien me puede ayudar???
La excepción de tomcat:
Código:
Estado HTTP 500 - -------------------------------------------------------------------------------- type Informe de Excepción mensaje descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento. excepción javax.servlet.ServletException: Cannot execute view page '/mail.view': webprofe.webfw.view.processor.ViewException: Error in call to component: webprofe.webfw.view.processor.ViewException: Error in call to component: webprofe.webfw.view.runtime.expression.EvalException: Undefined property 'name' on target webusr31.prac3.model.dao.UserVO@7e75d2 webprofe.webfw.view.http.ViewServlet.process(ViewServlet.java:63) webprofe.webfw.view.http.ViewServlet.doPost(ViewServlet.java:108) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) webprofe.webfw.controller.RequestMap.dispatchView(RequestMap.java:134) webprofe.webfw.controller.RequestMap.process(RequestMap.java:122) webprofe.webfw.controller.Controller.process(Controller.java:57) webprofe.webfw.controller.ControllerServlet.doPost(ControllerServlet.java:48) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) causa raíz webprofe.webfw.view.processor.ViewException: Error in call to component: webprofe.webfw.view.processor.ViewException: Error in call to component: webprofe.webfw.view.runtime.expression.EvalException: Undefined property 'name' on target webusr31.prac3.model.dao.UserVO@7e75d2 webprofe.webfw.view.runtime.tree.CallNode.invoke(CallNode.java:87) webprofe.webfw.view.runtime.tree.Fragment.invoke(Fragment.java:50) webprofe.webfw.view.runtime.tree.Page.execute(Page.java:56) webprofe.webfw.view.http.ViewServlet.process(ViewServlet.java:61) webprofe.webfw.view.http.ViewServlet.doPost(ViewServlet.java:108) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) webprofe.webfw.controller.RequestMap.dispatchView(RequestMap.java:134) webprofe.webfw.controller.RequestMap.process(RequestMap.java:122) webprofe.webfw.controller.Controller.process(Controller.java:57) webprofe.webfw.controller.ControllerServlet.doPost(ControllerServlet.java:48) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) causa raíz webprofe.webfw.view.processor.ViewException: Error in call to component: webprofe.webfw.view.runtime.expression.EvalException: Undefined property 'name' on target webusr31.prac3.model.dao.UserVO@7e75d2 webprofe.webfw.view.runtime.tree.CallNode.invoke(CallNode.java:87) webprofe.webfw.view.runtime.tree.Fragment.invoke(Fragment.java:50) webprofe.webfw.view.components.base.IfComponent.execute(IfComponent.java:18) webprofe.webfw.view.runtime.tree.CallNode.invoke(CallNode.java:76) webprofe.webfw.view.runtime.tree.Fragment.invoke(Fragment.java:50) webprofe.webfw.view.runtime.tree.Page.execute(Page.java:56) webprofe.webfw.view.http.ViewServlet.process(ViewServlet.java:61) webprofe.webfw.view.http.ViewServlet.doPost(ViewServlet.java:108) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) webprofe.webfw.controller.RequestMap.dispatchView(RequestMap.java:134) webprofe.webfw.controller.RequestMap.process(RequestMap.java:122) webprofe.webfw.controller.Controller.process(Controller.java:57) webprofe.webfw.controller.ControllerServlet.doPost(ControllerServlet.java:48) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) causa raíz webprofe.webfw.view.runtime.expression.EvalException: Undefined property 'name' on target webusr31.prac3.model.dao.UserVO@7e75d2 webprofe.webfw.view.runtime.introspection.HelperInfo.getProperty(HelperInfo.java:22) webprofe.webfw.view.runtime.introspection.BeanHelperInfo.getProperty(HelperInfo.java:102) webprofe.webfw.view.runtime.expression.PropertyExpression.evaluateWithTarget(PropertyExpression.java:26) webprofe.webfw.view.runtime.expression.ExpressionWithTarget.evaluate(ExpressionWithTarget.java:30) webprofe.webfw.view.runtime.tree.ExpressionNode.invoke(ExpressionNode.java:19) webprofe.webfw.view.runtime.tree.Fragment.invoke(Fragment.java:50) webprofe.webfw.view.components.base.ForEachComponent.processCollection(ForEachComponent.java:120) webprofe.webfw.view.components.base.ForEachComponent.execute(ForEachComponent.java:61) webprofe.webfw.view.runtime.tree.CallNode.invoke(CallNode.java:76) webprofe.webfw.view.runtime.tree.Fragment.invoke(Fragment.java:50) webprofe.webfw.view.components.base.IfComponent.execute(IfComponent.java:18) webprofe.webfw.view.runtime.tree.CallNode.invoke(CallNode.java:76) webprofe.webfw.view.runtime.tree.Fragment.invoke(Fragment.java:50) webprofe.webfw.view.runtime.tree.Page.execute(Page.java:56) webprofe.webfw.view.http.ViewServlet.process(ViewServlet.java:61) webprofe.webfw.view.http.ViewServlet.doPost(ViewServlet.java:108) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) webprofe.webfw.controller.RequestMap.dispatchView(RequestMap.java:134) webprofe.webfw.controller.RequestMap.process(RequestMap.java:122) webprofe.webfw.controller.Controller.process(Controller.java:57) webprofe.webfw.controller.ControllerServlet.doPost(ControllerServlet.java:48) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803)