Pergunta

Eu tenho a seguinte pergunta: Eu preciso passar um parâmetro (por exemplo, ID) quando eu terminar um formulário e a ação, salvo os valores do formulário, este encaminhará ao resultado = "sucesso" e eu preciso que a ação que será chamada no sucesso vem com o ID e outros parâmetros para uso posterior no próximo formulário para guardar estas informações (info-Form2 e info.form1) ...

Por exemplo:

FORM1 (USUÁRIO) ==== "sucesso" ====> FORM2 (ADDRESS)

userForm.html ===================> addressForm.html user_id = X ... (onde X:? Id passado lance de UserAction (método : salvar) para AddressAction (método: newAddress))

Por favor, eu aprecio sua ajuda

Agradecemos antecipadamente

Foi útil?

Solução

Você usou a palavra "frente", mas parece que você quer ir para uma nova página (address.html) para recolher mais informações sobre o endereço. Se este for o caso, você precisa redirecionar para a página de endereço depois da conclusão do ação do usuário.

<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>

A $ {userId} sintaxe chamará getUserId em seu UserAction e passar esse parâmetro como você mostrou na sua pergunta:? AddressForm.html user_id = X. collect-address pode ter um resultado de sucesso que vai para addressForm.html. Docs aqui. Se você quiser evitar o uso de outra ação , você pode tentar usando o tipo de resultado = "redirecionamento" passar as coisas dessa forma.

Se você realmente deseja encaminhar, você pode usar ação encadeamento . Esta é desencorajado por Ted Husted na equipe Struts2, mas ele pode trabalhar para você.

Em vez de ação encadeamento, tentar trazer todo o código para concluir este pedido em uma única ação e uso ajudante ou classes de serviço para usuário e endereço de separar e reutilizar o código em vez de "ação encadeamento".

Outras dicas

Não é muito claro o que você quer fazer.

parece que após a execução bem sucedida de uma ação, o pedido são encaminhados para outra ação. Na primeira ação que você quer passar ID parâmetro eo uso que no 2º ação. Uma vez que ambas as ações estão sendo usadas na mesma chamada de pedido, pode salvar o parâmetro de ID no pedido como este

request.setAttribute ( "ID", iDValueObject);

Na segunda ação que você pode extrair o valor de ID como este

request.getAttribute ( "ID");

Isso deve funcionar:

  <!--  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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top