2016-04-29 19 views
1

Ich finde einige Schwierigkeiten mit diesem speziellen Fall von Pfadvariable Verwendung in Spring MVC.Warum habe ich dieses falsche Verhalten, das eine E-mail-Adresse als Wert einer Spring MVC-Pfadvariablen übergibt?

So öffne ich eine URL wie folgt aus:

localhost:8080/my-project/utenze/my.username/confermaEmail/[email protected] 

In mein Controller-Klasse I dieses Controller-Methode haben, die URL wie folgt behandeln:

@RequestMapping(value = "utenze/{username}/confermaEmail/{email}", method = RequestMethod.GET) 
    public String confermaModificaEmail(@RequestHeader(value = HEADER_USER_CG) String codicefiscale, 
             @PathVariable String username, @PathVariable String email, Model model) { 

     logger.info("INTO confermaModificaEmail(), indirizzo e-mail: " + email); 

     ................................................................... 
     ................................................................... 
     ................................................................... 

     return "myView"; 
} 

Die vorherige Anfrage korrekt gehandhabt wird, aber ich habe das folgende Problem mit der E-Mail Pfadvariablenwert.

Das Problem ist, dass die E-Mail- Pfad Variablenwert ist nicht [email protected] wie ich erwarten würde, aber es ist [email protected].

Spring löscht automatisch den letzten .com Abschnitt des eingefügten Werts.

Warum? Was ist das Problem? Was vermisse ich? Wie kann ich versuchen, dieses Problem zu lösen?

+0

ein schneller Weg, um dieses Problem zu beheben ist: Machen Sie eine Methode (zum Beispiel emailFixer) und überprüfen Sie die E-Mail (Methodenparameter) mit dem Vorhandensein von .com als letztes der E-Mail und wenn es nicht dort war, dann fügen Sie es hinzu und senden Sie es zurück. –

+0

Siehe http://stackoverflow.com/a/34164388/2696260 –

Antwort

2

In Ihrem Fall ich die {email} aus den Pfadvariablen entfernen würde und fordere ihn über die Anfrageparameter:

@RequestMapping(value = "utenze/{username}/confermaEmail", method = RequestMethod.GET) 
public String confermaModificaEmail(@RequestHeader(value = HEADER_USER_CG) String codicefiscale, 
            @PathVariable String username, @RequestParam(value="email", required=true) String email, Model model) { 

    logger.info("INTO confermaModificaEmail(), indirizzo e-mail: " + email); 

    ................................................................... 
    ................................................................... 
    ................................................................... 

    return "myView";} 

Haben Sie einen Versuch bei dieser =)

+0

Dies ist keine Lösung für mich, weil ich diese URL verwenden müssen, die Parameter für E-Mail-Wert – AndreaNobili

+0

nicht verwenden Es wird auch für 'Benutzername' fehlschlagen, weil Benutzername enthält auch Punkt. –

+0

Diese Methode wird empfohlen, anstatt sie als Pfadvariable zu senden. –