Параметры Struts2 между действиями
-
22-08-2019 - |
Вопрос
Я должен передать некоторый параметр из действия в другое действие, например, чтобы сохранить отслеживание события.
Каков наилучший способ сделать это?
Я бы не стал использовать параметры сеанса.Спасибо
Решение
Предполагая, что вы находитесь на стороне сервера в рамках одного действия и хотите вызвать другое действие с некоторыми параметрами.
Вы можете использовать тег 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 для автоматического ввода параметров контекста действия (запрос / сеанс и т.д.)