Параметры Struts2 между действиями

Мне нужно передать какой-то параметр из действия в другое действие, например, чтобы отслеживать событие.

Как лучше всего это сделать?

Я бы не использовал параметры сеанса. Спасибо


person Giancarlo    schedule 17.12.2008    source источник


Ответы (5)


Предполагая, что вы находитесь на стороне сервера в рамках одного действия и хотите вызвать другое действие с некоторыми параметрами.

Вы можете использовать тег s:action для вызова другого действия, возможно, с дополнительными/другими параметрами, чем исходное действие:

    <s:action name="myAction"  ignoreContextParams="true" executeResult="true">
        <s:param name="foo" value="bar"/>
    </s:action>

Вы также можете использовать стандартный тип результата struts-xml с параметром:

<result name="success" type="redirect" >
      <param name="location">foo.jsp?foo=${bar}</param>
      <param name="parse">true</param>
      <param name="encode">true</param>
 </result>

Если вы хотите перенаправление на стороне клиента, вам нужно отправить URL-адрес обратно клиенту с правильными параметрами и, возможно, использовать какой-либо javascript, чтобы перейти туда.

        <s:url action="myAction" >
            <s:param name="foo" value="bar"/>
        </s:url>
person krosenvold    schedule 17.12.2008
comment
У меня было много проблем, чтобы понять это: ‹s:action ...› ‹s:param ... /› ‹/s:action› не работает в Struts 2.1.8.1. После обновления до Struts 2.2.1 все в порядке. Нигде не нашел заметки об этом. - person grefab; 17.08.2010

Используйте тег url в основных тегах struts, пример приведен ниже:

                <s:url var="idurl" action="EditEnterprise">
                    <s:param name="enterpriseId">
                        <s:property value="enterpriseId" />
                    </s:param>
                </s:url> 
person Shimit    schedule 10.12.2009

На самом деле вы собираетесь передать значение параметра одного действия из одного действия в другое.

просто включите переменную bean с тем же именем. какой параметр вы собираетесь получить при действии (действии приемника).

<action name="ForwardAction" class="...">
       <result name="success" type="chain">ReceiverAction</result>
</action>

Параметр ForwardAction будет перенаправлен в ReceiverAction. вы можете использовать его. но включите одно и то же имя компонента в оба действия.

если вы собираетесь получить идентификатор пользователя в средствах приема.,

Это должно быть в обоих действиях.,

private int userid;

public void setUserid(int id){
     this.userid = userid;
}

public int getUserid(){
     return userid;
}
person Sarathy    schedule 17.06.2011

на самом деле область действия и перехватчик servletConfig можно использовать в struts2 для автоматического извлечения параметров контекста действия (запрос/сеанс и т. д.)

person engineer    schedule 17.02.2011

person    schedule
comment
Извините?? я должен ответить? пожалуйста, не спамьте в поисках очков. - person Giancarlo; 24.09.2009