2017-03-08 2 views
0

Ich entwickle eine Spring-Boot-Anwendung mit Thymeleaf als die Ansicht Technologie. Ich habe eine HTML-Seite deshboard.html im Ordner src/main/resources/templates, die von einem Controller aus aufgerufen wird.Thymoleaf - Wie Vorlage HTML-Seite von statischen HTML-Seite aufrufen

enter image description here

@PostMapping("https://stackoverflow.com/users/register") 
public String registerUser(@Validated @ModelAttribute User user, Model model) { 
    User registeredUser = usersDAO.registerUser(user); 

    if (registeredUser == null) { 
     return "500error"; 
    } 

    model.addAttribute("name", user.getName()); 
    model.addAttribute("username", user.getUsername()); 
    model.addAttribute("emailId", user.getEmailId()); 

    return "dashboard"; 
} 

Ich habe einige weitere statische HTML-Dateien in static Ordner. Ich möchte dashboard.html aus einer statischen HTML-Datei aufrufen, wie mit Anchor-Tag . Wie kann das gemacht werden?

Ich kann nicht direkt zu dieser Datei verknüpfen, wenn meine App lokal ausgeführt wird. Zum Beispiel: localhost:8080/templates/dashboard.html wird nicht funktionieren.

+0

Nicht wirklich Ihre Frage hier, aber wichtig: Im Fall, dass der Benutzer 'null' ist, sollten Sie nicht nur eine richtige Fehlerseite zeigen aber auch sicherstellen, der richtige HTTP-Code verwendet wird. Mit dem aktuellen Code geben Sie immer noch 200 OK zurück. Der einfachste Weg ist, eine Ausnahme auszulösen, die mit '@ ResponseStatus' versehen ist. –

+0

src/main/resources ist keine gute Lage HTML-Seiten –

+0

@ Gurkanİlleez 'src/main/resources/templates' ist das Standardverzeichnis zu speichern, wenn Sie Frühlings-Boot mit dem Starter Thymeleaf verwenden. Ich stimme zu, dass es seltsam ist, einige HTML-Seiten im Unterverzeichnis 'static' zu haben. Meistens wird dies für CSS, JS und/oder Bilddateien verwendet. –

Antwort

2

Sie sollten einen Controller für Ihre thymeleaf HTML-Vorlage erstellen. Zum Beispiel:

@Controller 
@RequestMapping("/templates") 
public class DashboardController { 

    @GetMapping("/dashboard") 
    public ModelAndView dashboard() { 
     DashboardModel dashboardModel = new DashboardModel(); 
     return new ModelAndView("dashboard", "dashboard", dashboardModel); 
    } 

} 

Dann können Sie auf http://localhost:8080/templates/dashboard verknüpfen und Ihre dashboard.html Seite bekommen.

Natürlich können Sie die @RequestMapping("/templates") ändern und @GetMapping("/dashboard") die URL zu steuern, wie Sie möchten.

+0

Beachten Sie, dass Sie nicht verwenden Sie _need_ '/ templates' in der' @ RequestMapping' des Controllers kann dies alles sein, die Sie mögen und es wird immer noch funktionieren. –

+0

@WimDeblauwe, natürlich :) Ich benutzte das '/ templates/dashboard' wegen des URL-Musters, das er als Beispiel erwähnt hatte. habe meine Antwort mit dir Bemerkungen bearbeitet. – Tom

Verwandte Themen