проблема с действиями распоряжений и перенаправлениями - PullRequest
0 голосов
/ 13 мая 2010

Я пытаюсь обновить простое веб-приложение, созданное с использованием struts2, jsp и стандартных сервлетов. Я пытаюсь перенаправить URL на конкретное действие, но не могу заставить его работать правильно. Например, правильный URL-адрес:

http://localhost:8080/theapp/lookup/search.action

Вот мой web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
                     "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
<display-name>theapp</display-name>

<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>

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener> 

А вот мой struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration    
2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

<default-action-ref name="search" />

<action name="search" method="search" class="com.theapp.SearchAction" >
    <result>index.jsp</result>
    <result name="input" >index.jsp</result>
    <result name="error" type="redirect">site_locator_mobile/error.action</result>
</action>

Проблема здесь в том, что если я не укажу правильный URL, как указано выше, я просто получу файл index.jsp, но без каких-либо свойств в index.jsp, которые обрабатываются, поскольку информация содержится в сервлете.

Я бы хотел, чтобы кто-то только что вошел:

http://localhost:8080/theapp/lookup/ 

чем они будут приняты:

http://localhost:8080/theapp/lookup/search.action

Спасибо

Ответы [ 2 ]

0 голосов
/ 14 мая 2010

Это может звучать глупо, но вы можете опубликовать все содержимое файла struts.xml? Вы добавили пространство имен в XML-файл Struts. Вы пытаетесь найти myApp / lookup / someAction.action. Я думаю, что для вашего пакета должно быть определено пространство имен.

0 голосов
/ 13 мая 2010

Возможно, вы можете указать сервлет в качестве файла приветствия:

<welcome-file-list>
<welcome-file>search.action<welcom-file>
<welcome-file-list> 

Примечание: некоторые люди сообщают, что файл с именем search.action должен действительно существовать, чтобы это работало.

Другой вариант - перенаправить index.jsp на search.action и использовать другой результат jsp:

<% response.sendRedirect("search.action"); %>

Редактировать: Можно также добавить директиву сопоставления фильтров непосредственно к web.xml, которая перенаправляет запросы на /theapp/lookup/ на /theapp/lookup/search.action

Кажется, более сложным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...