Вопрос

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

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

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

Это было полезно?

Решение

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

Вы можете использовать тег 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>

Другие советы

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

                <s:url var="idurl" action="EditEnterprise">
                    <s:param name="enterpriseId">
                        <s:property value="enterpriseId" />
                    </s:param>
                </s:url> 
<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>

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

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

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

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

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

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

private int userid;

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

public int getUserid(){
     return userid;
}

на самом деле, перехватчик scope и ServletConfig могут быть использованы в struts2 для автоматического ввода параметров контекста действия (запрос / сеанс и т.д.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top