Olá:
Estou criando uma aplicação com Struts. Minha intenção é quando acesso esta aplicação seja mostrada a página order.jsp, que é a indicada pela action SolicitarAction. Esta página deve exibir certos parâmetros que foram passados pelo servlet (como “mk” e “intec”). Ao invés do ActionServlet, estou uma sub-classe desta, ActionServletBomi, que apenas sobrepõe o método init().
O arquivo web.xml é o seguinte:
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. -->
<web-app>
<context-param>
<param-name>conf</param-name>
<param-value>C:/java/Tomcat 4.1/webapps/bomi/WEB-INF/conf/</param-value>
<description>Localizacao do diretorio de configuracao</description>
</context-param>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>bomi.servlet.ActionServletBomi</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>consulta.do</welcome-file>
</welcome-file-list>
<!-- Definição dos Taglibs -->
</web-app>
O ActionServletBomi.java é o seguinte:
package bomi.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import org.apache.struts.action.ActionServlet;
import bomi.util.Contexto;
public class ActionServletBomi extends ActionServlet {
public ActionServletBomi() {
super();
}
public void init(ServletConfig conf) throws ServletException {
super.init(conf);
Contexto.getInstance().setPath(
conf.getServletContext().getInitParameter("conf"));
}
}
O struts-config.xml é este:
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<action-mappings>
<action path="/consulta" unknown="false" type="bomi.servlet.SolicitarAction">
<forward name="consulta" path="/order.jsp" redirect="false" />
</action>
<!-- Outras Actions -->
</action-mappings>
</struts-config>
O arquivo SolicitarAction.java, onde passo constantes como atributos:
package bomi.servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import bomi.bean.*;
import bomi.util.*;
public class SolicitarAction extends Action {
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
req.setAttribute("individual", ObjetoConsultaNota.INDIVIDUAL);
req.setAttribute("intervalo", ObjetoConsultaNota.INTERVALO);
req.getSession().setAttribute("MK", Order.MK);
req.getSession().setAttribute("INTEC", Order.INTEC);
return map.findForward("consulta");
}
}
E um trecho de order.jsp:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<!-- -->
<BODY bgColor=#ffffff text=#000000>
<!-- -->
<input type="checkbox" name="<c:out value='${MK}'/>" checked='true'><c:out value='${MK}'/>
<!-- -->
</BODY>
</HTML>
Agora os problemas:
Quando digito http://localhost:8080/bomi/, aparece a listagem de arquivos do diretório raiz da aplicação.
Se eu digitar http://localhost:8080/bomi/consulta.do é exibida uma mensagem de erro:
sendo que em lugar nenhum da stack Trace é mencionada minha classe derivada de ActionServlet.
Se eu digitar http://localhost:8080/bomi/order.jsp a página é exibida sem aparecer os parâmetros passados (como o checkbox mencionado acima).
Se eu alterar web.xml para que o welcome-file seja order.jsp e depois digito http://localhost:8080/bomi/ no meu browser obtenho a seguinte mensagem de erro:
:?: Então, alguém tem alguma idéia de como proceder? Esta é minha primeira aplicação de Struts “para valer” e provavelmente devo estar pisando em ovos. Só que não sei que ovos são esses :? !
Grato,