Considerando que minha primeira página do site já tem coisas a serem processadas por uma “Action”… não poderia colocar:
<welcome-file-list>
<welcome-file>Teste.action</welcome-file>
</welcome-file-list>
??
Não está direcionando para a Action como eu imaginava… abre a estrutura de diretórios da pasta!
Como eu deveria fazer isso?
Você poderia postar o restante de seu web.xml?
Hendris
Setembro 17, 2007, 6:00pm
#3
Olá Leandro Carvalho,
Bom, até onde sei funciona sim mas parece que está faltando a barra antes da action:
Ou seja,
<welcome-file-list>
<welcome-file>/Teste.action</welcome-file>
</welcome-file-list>
Experimente.
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>TesteStruts</display-name>
<welcome-file-list>
<welcome-file>/HelloWorld.action</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Do jeito que está aí, se eu tiver um arquivo “index.jsp”, ele abre esse index.jsp sem antes passar por nenhuma Action, se eu não tiver nenhuma página chamada index.jsp, aparece a estrutura de diretórios, e o curioso é que se eu tiver um arquivo chamado “HelloWorld.action”, ele abre este arquivo! O que me faz acreditar que não é possível fazer isto que eu estou fazendo…
Eu penso que este “welcome-file” é para indicar o caminho do “file” (arquivo) que deve ser aberto para quem não especificar via URL.
No caso o action do Struts2 é diferente já que ele não é um arquivo. Ele é só uma URL que é interceptada e tratada pelo Filter do Struts2.
Se você quer que ele chame esta action eu te aconselho a utilizar o seguinte recurso:
Crie um index.html (o com o nome que você quiser =]) com o seguinte codigo:
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/HelloWorld.action">
</head>
<body>
</body>
</html>
Onde o “0” é a quantidade de segundos antes do redirecionamento.
Daí configure seu web.xml com o “welcome-file” assim:
<welcome-file-list>
<welcome-file>/index.html</welcome-file>
</welcome-file-list>
Ai é só correr para o abraço! =]
Espero ter ajudado. Até.
Até aí o:
<%
response.sendRedirect("/testestruts/Inicio.do");
%>
Resolve… mas… feio, né?