Question

J'ai la question suivante: Je dois passer un paramètre (par exemple ID) quand je finis une forme et l'action de sauvegarde des valeurs du formulaire, ce transmettra au résultat = « succès » et j'ai besoin que l'action qui sera appelé dans le succès viennent avec la ID et d'autres paramètres à utiliser plus tard sous la forme suivante pour enregistrer ces informations (info-form2 et info.form1) ...

par exemple:

FORM1 (USER) ==== "succès" ====> FORM2 (adresse)

userForm.html ===================> addressForm.html user_id = X ... (où X: Id jet passé de useraction (méthode : save) AddressAction (méthode: newAddress))

S'il vous plaît, je remercie de votre aide

Merci d'avance

Était-ce utile?

La solution

Vous avez utilisé le mot « avant », mais il semble que vous voulez aller à une nouvelle page (address.html) pour recueillir plus d'informations sur l'adresse. Si tel est le cas, vous devez rediriger vers la page d'adresse après l'action de l'utilisateur se termine.

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

La syntaxe $ {} userId appellera GetUserID sur votre useraction et passer ce paramètre que vous montriez votre question: addressForm.html user_id = X. la collecte d'adresse peut avoir un résultat de réussite qui va à addressForm.html. Docs ici. Si vous voulez éviter d'utiliser une autre action , vous pouvez essayer en utilisant le type de résultat = "redirect" passer les choses à travers cette façon.

Si vous voulez vraiment en avant, vous pouvez utiliser enchaînant l'action . Ceci est découragé par Ted Husted sur l'équipe Struts2 mais il peut travailler pour vous.

Au lieu de l'enchaînement d'action, essayez de mettre tout le code pour effectuer cette demande en une seule action et utiliser des classes d'aide ou de service pour l'utilisateur et adresse pour séparer et réutiliser le code au lieu de « Enchaînement d'action ».

Autres conseils

Pas très clairement ce que vous voulez faire.

On dirait après l'exécution réussie d'une action, la demande est réexpédié à une autre action. Dans la première action que vous voulez passer le paramètre ID et l'utiliser dans la 2ème action. Étant donné que les actions se habituent dans la même requête que vous appelez peut enregistrer le paramètre ID dans la requête comme ceci

request.setAttribute ( "ID", iDValueObject);

Dans la deuxième action, vous pouvez extraire la valeur d'ID comme ceci

request.getAttribute ( "ID");

Cela devrait fonctionner:

  <!--  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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top