2017-03-08 12 views
0

私はビュー技術としてThymeleafを使ってSpringブートアプリケーションを開発しています。私はsrc/main/resources/templatesフォルダの中にhtmlページdashboard.htmlを持っています。これはコントローラの中から呼び出されています。Thymeleaf - 静的なHTMLページからテンプレートのhtmlページを呼び出す方法

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"; 
} 

私はstaticフォルダ内のいくつかのより多くの静的なhtmlファイルを持っています。アンカータグ<a/>のような静的なhtmlファイルからdashboard.htmlに電話したいと思います。これはどうすればできますか?

自分のアプリがローカルで実行されているときに、このファイルに直接リンクすることはできません。たとえば、localhost:8080/templates/dashboard.htmlは機能しません。

+0

ここでは本当にあなたの質問ではありませんが、重要です:ユーザーが 'null'の場合は、適切なエラーページを表示するだけでなく、適切なHTTPコードが使用されるようにする必要があります。現在のコードでは、200 OKを返します。最も簡単な方法は、@ ResponseStatusで注釈を付けられた例外をスローすることです。 –

+0

src/main/resourcesはhtmlページを保存するのに適していません –

+0

ThymeleafスターターでSpring Bootを使用すると、@Gurkanİlleez 'src/main/resources/templates'がデフォルトの場所になります。 'static'サブディレクトリにいくつかのhtmlページがあるのは奇妙なことに私は同意します。主にCSS、JS、イメージファイルに使用されます。 –

答えて

2

thymeleaf htmlテンプレートのコントローラを作成する必要があります。たとえば:

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

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

} 

は、その後、あなたはhttp://localhost:8080/templates/dashboardにリンクして、dashboard.htmlページを取得することができます。

もちろん、@RequestMapping("/templates")@GetMapping("/dashboard")を変更して、好きなようにURLを制御することができます。

+0

コントローラの '@ RequestMapping'に'/templates'を使用する必要はありませんが、これはあなたが好きなことであり、それでも動作します。 –

+0

@WimDebelauweもちろん、私は例として言及したURLパターンのために '/ templates/dashboard'を使いました。あなたのコメントを編集しました。 – Tom

関連する問題