Tengo una aplicación que usa struts e hibernate, y la corro en el tomcat. Hace dias que lucho contra esto.
Tiene una pàgina inicial (“home2.jsp”), que maneja un formulario (dni y nombre de persona). Se ingresa el dni y se hace click en un botón “Buscar”.
Al hacer click en ese botòn redirecciona, a travès de una acciòn, “FichaPersonal.jsp” pero muestra:
javax.servlet.ServletException: Cannot find bean: "PersonaBO" in any scope
org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:781)
.................
FichaPersonal.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<html>
<head>
<title>Encontrè una persona</title>
<td>El nombre es<bean:write name="PersonaBO" property="nombre"/></td>
</head>
</html>
Esta es la acciòn:
“SearchPersonAction3”
public class SearchPersonAction3 extends Action
{
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
throws Exception
{
ActionForward forward = null;
IManejadorPersonas service = null;
try
{
Integer dni =((SearchPersonForm)form).getDniAccess();
service = new PersonsManager2();
PersonaBO personaBO;
personaBO = service.getPersona(dni);
HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();
session=request.getSession(true);
session.setAttribute("persona",personaBO);
forward = mapping.findForward("success");
}catch(Exception ex)
{
ex.printStackTrace();
throw DatastoreException.datastoreError(ex);
}
return forward;
}
}
config-struts.xml
<struts-config>
<form-beans>
<form-bean
name="SearchPersonForm"
type="SearchPersonForm"/>
</form-beans>
<action-mappings>
<action
path="/personas"
type="IAction"
name=""
scope="request"
validate="false">
<forward name="success" path="/home2.jsp" redirect="true"/>
</action>
<action
path="/BuscarPorDNI"
type="SearchPersonAction3"
name="SearchPersonForm"
scope="session"
validate="false">
<forward name="success" path="/FichaPersonal.jsp" redirect="true"/>
</action>
</action-mappings>
</struts-config>
“PersonsManager2.java”, (llamado por SearchPersonAction3)
public class PersonsManager2 implements IManejadorPersonas
{
SessionFactory sessionFactory = null;
public PersonsManager2()throws DatastoreException
{
init();
}
public PersonaBO getPersona(Integer id1)throws DatastoreException
{
PersonaBO personaBO = null;
Session session = null;
try
{
session = sessionFactory.openSession();
personaBO = (PersonaBO)session.get(PersonaBO.class,id1);
session.close();
}catch (Exception ex)
{
ex.printStackTrace();
throw DatastoreException.datastoreError(ex);
}
if (personaBO==null)
throw DatastoreException.objectNotFound();
return personaBO;
}
private void init()throws DatastoreException
{
try
{
sessionFactory=new Configuration().configure().buildSessionFactory();
}catch(Exception ex){
throw DatastoreException.datastoreError(ex);
}
}
}
Pila completa de errores:
javax.servlet.ServletException: Cannot find bean: "PersonaBO" in any scope
org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:781)
org.apache.jsp.FichaPersonal_jsp._jspService(org.a pache.jsp.FichaPersonal_jsp:77)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
causa raíz
javax.servlet.jsp.JspException: Cannot find bean: "PersonaBO" in any scope
org.apache.struts.taglib.TagUtils.lookup(TagUtils. java:934)
org.apache.struts.taglib.bean.WriteTag.doStartTag( WriteTag.java:225)
org.apache.jsp.FichaPersonal_jsp._jspx_meth_bean_w rite_0(org.apache.jsp.FichaPersonal_jsp:94)
org.apache.jsp.FichaPersonal_jsp._jspService(org.a pache.jsp.FichaPersonal_jsp:63)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
La persona se busca exitosamente (a traves de PersonsManager2) pues ya lo he chequeado, pero tengo el problema de ambito
Saludos y gracias
Pila de errores
javax.servlet.ServletException: Cannot find bean: "PersonaBO" in any scope
org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:781)
org.apache.jsp.FichaPersonal_jsp._jspService(org.a pache.jsp.FichaPersonal_jsp:77)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
causa raíz
javax.servlet.jsp.JspException: Cannot find bean: "PersonaBO" in any scope
org.apache.struts.taglib.TagUtils.lookup(TagUtils. java:934)
org.apache.struts.taglib.bean.WriteTag.doStartTag( WriteTag.java:225)
org.apache.jsp.FichaPersonal_jsp._jspx_meth_bean_w rite_0(org.apache.jsp.FichaPersonal_jsp:94)
org.apache.jsp.FichaPersonal_jsp._jspService(org.a pache.jsp.FichaPersonal_jsp:63)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)