Domanda

Ho la seguente domanda: Ho bisogno di passare un parametro (ad esempio ID) quando finisco un modulo e l'azione Salva i valori del form, questo inoltrerà al risultato = "successo" e ho bisogno che l'azione che verrà chiamata nel successo venire con il ID e altri parametri da utilizzare in seguito in forma successiva per salvare queste informazioni (info-form2 e info.form1) ...

Ad esempio:

FORM1 (USER) ==== "successo" ====> FORM2 (INDIRIZZO)

userForm.html ===================> addressForm.html user_id = X ... (dove X:? Id superato tiro di UserAction (metodo : salva) per AddressAction (metodo: newAddress))

Io apprezzo il vostro aiuto

Grazie in anticipo

È stato utile?

Soluzione

Si è utilizzato il termine "in avanti", ma suona come si vuole andare ad una nuova pagina (address.html) per raccogliere ulteriori informazioni circa l'indirizzo. Se questo è il caso, è necessario reindirizzare alla pagina di indirizzo dopo l'azione utente completa.

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

Il $ {} userId sintassi chiamerà GetUserID sul UserAction e passare tale parametro come hai mostrato nella tua domanda:? AddressForm.html user_id = X. raccogliere-indirizzo può avere un risultato di successo che va a addressForm.html. Docs qui. Se si vuole evitare di utilizzare un'altra azione , si può provare a utilizzando il tipo di risultato = "reindirizzare" passare attraverso le cose in questo modo.

Se davvero si vuole inoltrare, è possibile utilizzare azione concatenamento . Questo è scoraggiato da Ted Husted sulla squadra Struts2 ma esso può funzionare per voi.

Invece di azione concatenamento, cercare di portare tutto il codice per completare questa richiesta in una sola azione e utilizzare classi di supporto o di servizio per l'utente e indirizzo per separare e riutilizzare il codice al posto di "azione concatenamento".

Altri suggerimenti

Non è molto chiaro che cosa si vuole fare.

Sembra che dopo l'esecuzione di successo di un'azione, la richiesta viene inoltrata ad un'altra azione. Nella prima azione che si desidera passare parametro ID e l'uso che nel 2 ° azione. Dal momento che sia le azioni si stanno abituando nella stessa richiesta è chiamata può salvare il parametro ID di richiesta come questo

request.setAttribute ( "ID", iDValueObject);

Nella seconda azione è possibile estrarre il valore di ID come questo

request.getAttribute ( "ID");

Questo dovrebbe funzionare:

  <!--  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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top