não Struts2 não encontrar arquivos JSP

votos
2

Eu tenho tentado sem sucesso para configurar uma aplicação simples Struts2 para que eu possa continuar com a aprendizagem do quadro. Basicamente, o que eu estou esperando para acontecer é que quando uma ação é desencadeada que não está definido, em seguida, uma página padrão será exibida.

Este aplicativo está sendo desenvolvido em Eclipse.

Eu tenho um arquivo struts.xml muito simples configurar no diretório WEB-INF / classes:

<struts>
<!-- Include webwork default (from the Struts JAR). -->
<include file=struts-default.xml />

<!-- Configuration for the default package. -->

<package name=default extends=struts-default>
    <action name=*>
        <result>/test.jsp</result>
    </action>
</package>
</struts>

Eu tenho o arquivo test.jsp (apenas o modelo padrão jsp que é criado no Eclipse, ou seja, Inserir o título aqui) no nível WebContent, ea página de boas-vindas (que aciona a ação) é index.jsp também está na mesma nível e é exibido na inicialização do programa. Ela é definida como se segue:

 <%@page contentType=text/html pageEncoding=UTF-8%>
 <%@ taglib prefix=s uri=/struts-tags %>

<html>
  <head>
    <title>GlassFish JSP Page</title>
  </head>
<body>
<h1>Hello World!</h1>
<s:form action=other>
   <s:submit value=Submit />
</s:form>
</body>
</html> 

Eu também tentei isso com outros nomes de ação, e não importa o quê, eu voltar uma página 404 não encontrado. Eu tentei isso em ambos GlassFish e Websphere 6.1.1 com os mesmos resultados, levando-me a suspeitar que há algo que eu estou em falta que provavelmente está certo na minha frente envolvendo quer estrutura de diretório (são os caminhos relativos aos suportes. arquivo xml ou a raiz de contexto?) ou algum arquivo de configuração.

Depois de algum tentar, eu era capaz de obter esta instalado e funcionando no Eclipse Ganymede no Mac OS X 10.5.6 usando Glassfish, mas ainda estou tendo nenhuma sorte com a IBM Websphere e Application Server Toolkit (um derivado Eclipse) no Windows XP. Eu sou um pouco suspeito que isso pode ter algo a ver com o navegador.

Eu apenas tentei adicionar um arquivo chamado other.action para o mesmo diretório como meus outros arquivos JSP mencionados acima. Agora, quando eu clico no botão enviar que está ligada à ação outro, a ação prossegue com sucesso à minha página test.jsp. Posso estar errado, mas eu não acredito que eu deveria ter para dar um arquivo chamado someaction.action para cada someaction possível que eu talvez precise usar (eu sei que não precisamos, no OS X correr do meu app).

Mais atualizações - Eu só tentei no Firefox 3.5.2 e em execução em que o navegador deu os mesmos resultados - arquivo não encontrado sem o arquivo other.action na Websphere, então agora eu suspeito que é um problema de configuração Websphere.

Publicado 26/08/2009 em 23:05
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

Usando o Firefox forneceu a chave que eu precisava para determinar a origem deste problema - o Erro 404: mensagem SRVE0190E que me disse que o problema era uma configuração Websphere.

O problema é explicada com mais detalhes no seguinte link:

IBM Websphere WebContainer lança um FileNotFoundException quando uma solicitação é recebida para um arquivo estático que não existe no sistema de arquivos.

E a solução é explicado neste link (neste caso, definindo o valor com.ibm.ws.webcontainer.invokefilterscompatibility = true):

Websphere configurar propriedades personalizadas

Para sermos mais completos, vou colocar como corrigir esse problema aqui:

-No console administrativo, clique em "Servidores" e em Servidores clique "Servidores de Aplicativos"

-Clique no servidor para o qual a propriedade personalizada é para ser aplicado

-Em "Configuração" e "Configurações do contêiner" clique em "Configurações de contêiner da Web" e em Configurações do Contêiner da Web clique em "Web Container"

-Em "Configuração" e "Propriedades Adicionais" clique em "Propriedades personalizados"

-No página Propriedades personalizadas, clique em "New"

-Em a página de configurações, digite o nome da propriedade personalizada para ser adicionado no campo "Nome" e o valor a ser definido para a propriedade personalizada no campo "Valor". Note-se que algumas propriedades são maiúsculas de minúsculas. Para esta edição, a propriedade é "com.ibm.ws.webcontainer.invokefilterscompatibility" eo valor será "true"

-Clique em "Aplicar" ou "OK"

-Clique em "Salvar" na caixa "Mensagens" que aparece Reinicie o servidor para a propriedade personalizada para entrar em vigor

Respondeu 27/08/2009 em 03:16
fonte usuário

votos
0

Eu posso estar errado, mas para cada ação, ele vai para /test.jsp. No entanto, você acabou de criar [aplicativo nome] /index.jsp ?? Criar um [aplicativo nome] /test.jsp e apontar lá !? (Tente remover a barra no arquivo xml antes test.jsp?)

Respondeu 26/08/2009 em 23:11
fonte usuário

votos
0

Você está definitivamente bater a raiz de contexto para a sua aplicação. ou seja, web.xmla aplicação tem um nome este é normalmente o mesmo que a raiz de contexto a menos que tenha embalados a aplicação-se em um arquivo de guerra com um nome diferente.

http://yourserver:8080/yourcontextroot

Acredito que Stuts 2 vem com algumas aplicações web de amostra e alguns arquétipos Maven. É sempre uma boa idéia para começar com um destes e, em seguida, personalizá-lo para suas necessidades.

http://struts.apache.org/2.1.2/docs/struts-maven-archetypes.html

Struts 2 tem um projeto de exemplo chamada struts-blank-2.x.xx.war. http://mirrors.dedipower.com/ftp.apache.org/struts/examples/struts2-blank-2.0.14.war

Você pode baixá-lo e renomeá-lo para .zipe ver como eles criaram o projeto-se.

WEB-INF / web.xml

deve ter o servlet struts2 e filtro

...    
<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-INF / classes / struts.xml deve estar na pasta aulas e deve apontar para seu arquivo de configuração struts

    ...
    <include file="yourconfig.xml"/>

* WEB-INF / yourconfig.xml na mesma pasta struts.xmle contém os mapeamentos por suas ações

...
<package name="example" namespace="/example" extends="struts-default">

    <action name="*" class="example.ExampleSupport">
        <result>/example/test.jsp</result>
    </action>

    <!-- Add actions here -->
</package>

Todos os arquivos JSP estão em uma pasta chamada /example

Respondeu 26/08/2009 em 23:10
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more