Вопрос

У меня есть следующий вопрос:Мне нужно передать параметр (например, ID ), когда я завершу форму, и действие сохранит значения формы, это приведет к результату = "успех", и мне нужно, чтобы действие, которое будет вызвано в случае успеха, сопровождалось идентификатором и другими параметрами для последующего использования в следующей форме для сохранения этой информации (info-form2 и info.form1)...

например:

ФОРМА 1 ( ПОЛЬЗОВАТЕЛЬ ) ==== "успех" ====> ФОРМА 2 ( АДРЕС )

userForm.html ===================> Адресная форма.html?идентификатор пользователя=X ...(где X :Идентификатор, переданный из UserAction (метод: save) в AddressAction (метод:newAddress))

Пожалуйста, я буду признателен вам за помощь

Заранее спасибо

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

Решение

Вы использовали слово "переслать", но звучит так, как будто вы хотите перейти на новую страницу (address.html ), чтобы собрать больше информации об адресе.Если это так, вам необходимо перенаправить на адресную страницу после завершения действия пользователя.

<action name="user" class="UserAction">
  <!-- Redirect to another namespace -->
  <!-- for Struts 2.2 --> <result type="redirectAction">
  <!-- for Struts 2.0 <result type="redirect-action"> -->
    <param name="actionName">collect-address</param>
    <param name="userId">${userId}</param>
  </result>
</action>

Синтаксис ${userId} вызовет getUserId в вашем UserAction и передаст этот параметр, как вы показали в своем вопросе:Адресная форма.html?идентификатор пользователя=X.сбор адреса может привести к успешному результату, который переходит к addressForm.html. Документы здесь. Если вы хотите избежать использования другого действия, вы можете попробовать используя тип результата="перенаправление" и пропускать все через себя таким образом.

Если вы действительно хотите переслать, вы можете использовать цепочка действий.Это обескуражен Тедом Хастедом из команды Struts2 но это может сработать для вас.

Вместо цепочки действий попробуйте объединить весь код для выполнения этого запроса в одно действие и используйте классы helper или service для User и Address, чтобы разделить и повторно использовать код вместо "цепочки действий".

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

Не очень понятно, что вы хотите сделать.

Похоже, что после успешного выполнения действия запрос перенаправляется на другое действие.В первом действии вы хотите передать идентификатор параметра и использовать его во 2-м действии.Поскольку оба действия используются в одном и том же вызове запроса, вы можете сохранить параметр ID в запросе следующим образом

запрос.setAttribute("ID", iDValueObject);

Во втором действии вы можете извлечь значение ID следующим образом

запрос.getAttribute("ИДЕНТИФИКАТОР");

Это должно сработать:

  <!--  Package Default -->
    <package name="**default**" extends="struts-default,json-default" namespace="/">
        <action name="noOp" class="com.web.myapp.action.NoOpAction">
           <result name="success" type="chain">
                    <param name="requiresValidation">true</param>
                    <param name="actionName">userAuthentication</param>
                    <param name="namespace">/user</param>
          </result>
        </action>   
    </package>
    <!--  Package User -->
    <package name="user" extends="struts-default,json-default" namespace="/user">
    <action name="userAuthentication" class="com.web.myapp.action.AuthenticateAction">
    ...
    </action>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top