В Struts2, как мне перенаправить на JSP с дополнительными параметрами - PullRequest
1 голос
/ 08 декабря 2010

У меня есть перехватчик, который должен прервать действие и перенаправить на новую страницу. В настоящее время он возвращает строку типа "go_to_foo". Это работает нормально, но я также хочу отправить дополнительный параметр к действию. Я пытался настроить этот результат в struts.xml как:

<global-results>
            ...
            <result name="go_to_foo">
                <param name="location">foo.jsp</param>
                <param name="testing">mark</param>
            </result>
</global-results>

Я получаю следующее исключение: поймал OgnlException при установке свойства 'testing' для типа 'org.apache.struts2.dispatcher.ServletDispatcherResult' Мне интересно, связано ли это с тем, что объект Request не знает ни о каком параметре 'testing'.

Кроме того, мне также интересно, может ли Interceptor добавить / изменить параметры запроса перед возвратом строки "go_to_foo", чтобы они все еще были доступны в foo.jsp. Если что-то подобное возможно, возможно, мне не нужно то, что указано выше.

Надеюсь, это было достаточно ясно.

Спасибо, Mark

Ответы [ 2 ]

3 голосов
/ 09 декабря 2010

Вы забыли атрибут type=redirect

<result name="go_to_foo" type="redirect">
     <param name="location">foo.jsp</param>
     <param name="testing">mark</param>
</result>

, чтобы получить доступ к значению, используя

<s:property value="#parameters.testing" />

или

${parameters.testing[0]}
2 голосов
/ 10 декабря 2010

Тег <param/> предназначен для установки параметров в результате, а не для добавления параметров строки запроса в перенаправление.

Например, <param name="testing">mark</param> пытается вызвать setTesting("mark") в классе ServletRedirectResult.Нет такого метода.

Попробуйте: <param name="location">foo.jsp?testing=mark</param>

Кроме того, вам действительно нужно перенаправить?Почему бы просто не добавить нужный параметр в контекст действия и продолжить?

...