2016-04-01 21 views
5

Nella seguente azione di Spring 3.1, devo fare alcune cose e aggiungere attributo a una richiesta POST, e quindi reindirizzare a URL esterno tramite POST (Non posso usare GET) .Spring, reindirizzamento a url esterno tramite POST

@RequestMapping(value = "/selectCUAA", method = RequestMethod.POST) 
public ModelAndView selectCUAA(@RequestParam(value="userID", required=true) String cuaa, ModelMap model) { 
    //query & other... 
    model.addAttribute(PARAM_NAME_USER, cuaa); 
    model.addAttribute(... , ...); 
    return new ModelAndView("redirect:http://www.externalURL.com/", model); 
} 

Ma con questo codice il metodo GET è utilizzato (gli attributi vengono aggiunti alla http://www.externalURL.com/). Come posso usare il metodo POST? È obbligatorio dall'URL esterno.

+2

allora non è un reindirizzamento. Un reindirizzamento produce sempre una richiesta GET. Se vuoi un POST dovrai chiamare l'URL dal codice java e passare il risultato. –

+0

Vedere anche http://programmers.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect –

risposta

2

Come ha detto @stepanian, non è possibile reindirizzare con POST. Ma ci sono alcune soluzioni alternative:

  1. Effettuare una semplice connessione HttpUrl e utilizzare POST. Dopo l'output del flusso di risposta. Funziona, ma ho avuto qualche problema con i CSS.
  2. Fa cose nel tuo controller e dopo reindirizza i dati dei risultati su una pagina falsa. Questa pagina farà automaticamente il POST tramite javascript senza l'intervento dell'utente (more details):

html:

<form name="myRedirectForm" action="https://processthis.com/process" method="post"> 
    <input name="name" type="hidden" value="xyz" /> 
    <input name="phone" type="hidden" value="9898989898" /> 
    <noscript> 
     <input type="submit" value="Click here to continue" /> 
    </noscript> 
</form> 
    <script type="text/javascript"> 

     $(document).ready(function() { 
      document.myRedirectForm.submit(); 
     }); 

    </script> 
3

Non è possibile reindirizzare con POST. È possibile inviare una richiesta POST utilizzando il codice Java con una classe come HttpURLConnection all'interno dell'azione.

+0

Ok, grazie, ho utilizzato questo esempio: http://stackoverflow.com/questions/3324717/ invio-http-post-request-in-java il mio controller Spring * selectCUAA * cosa dovrebbe restituire ora? Ho bisogno di un reindirizzamento alla nuova pagina web. – Accollativo

+0

È possibile reindirizzare dopo che il POST con il codice è stato completato. – stepanian

+0

Reindirizza senza attributo? In questo modo è come chiamare un post e dopo un get, quindi il risultato sarà solo l'ultimo get? (il nuovo url è una pagina di accesso che richiede il parametro sul post). Comunque grazie, lunedì darò una prova – Accollativo

Problemi correlati