SpringBoot+ThymeleafのアプリでCSSが読み込めない
サーバーサイドの勉強のためにSpringBootで簡単なTodoアプリを作ってるのですが、CSSが全然ロードしてくれなくて結構な沼にハマったのでメモ。
パスの問題?
まず疑ったのがパスの指定の仕方。あるあるですからね。
いろんなパスの指定の仕方を試しました。それでもうまく行きません。
src/main/resources
├── application.properties
├── dump.sql
├── static
│ ├── css
│ │ └── style.css
│ └── js
└── templates
├── category
│ └── list.html
└── todo
└── list.html
../../static/css/style.cssってやってみたり、css/style.cssってやってみたり・・
ステータスコード400
ここで注目すべきなのが、コードが400であるということ。
一番上の画像を見てください。404 NOT FOUNDじゃないんです!
つまりパスが間違っているわけではない。これに気づくのにめっちゃ時間かかりました。
Abortedってなんや・・イミフ・・
ブラウザの問題かもしれない
そう思ってFirefoxでも試してみました。(もとはChrome)
まあもちろんそんなはずはなく。
あれ、なんかChromeより長い・・?
なぜかFirefoxさんはご親切にJava側のエラー内容まで教えてくれました。
Failed to convert String to int....?
"css/style.css"部分をint型として処理しようとしている・・?なんで・・・?
ここでようやくハッと気づいたのですが、実はコントローラーでこんなものを作っていました。
@Controller
@RequestMapping("/{category_id}")
public class TodoController {
このパス変数category_idはint型なので、どうやらベースURLの直後に入ってきたものをなんでもintとしてコントローラーが処理しようとしちゃっててエラーになっていたようです。
というわけでコントローラーのパスを/categories/{category_id}に変更したら、無事CSSがロードしてくれました。
ありがとうFirefox。
(Spring側のログに普通にエラー内容書いてあった。)
Author And Source
この問題について(SpringBoot+ThymeleafのアプリでCSSが読み込めない), 我々は、より多くの情報をここで見つけました https://qiita.com/yuk0ga/items/0f2dbc81145bc0203ead著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .