Параметры Struts2 между действиями - PullRequest
7 голосов
/ 17 декабря 2008

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

Каков наилучший способ сделать это?

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

Ответы [ 5 ]

11 голосов
/ 17 декабря 2008

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

Вы можете использовать тег 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>
1 голос
/ 17 июня 2011

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

просто включает переменную 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;
}
1 голос
/ 11 декабря 2009

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

                <s:url var="idurl" action="EditEnterprise">
                    <s:param name="enterpriseId">
                        <s:property value="enterpriseId" />
                    </s:param>
                </s:url> 
1 голос
/ 23 сентября 2009
<td>
   <s:url id="url" action="Logging">
      <s:param name="m_userNameInAction"><s:property value="m_userNameInForm"/></s:param>
    </s:url>
    <s:a href="%{url}">English</s:a>
</td>
0 голосов
/ 17 февраля 2011

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

...