LoginSignup
0
2

More than 5 years have passed since last update.

SpringBoot+ThymeleafのアプリでCSSが読み込めない

Posted at

サーバーサイドの勉強のためにSpringBootで簡単なTodoアプリを作ってるのですが、CSSが全然ロードしてくれなくて結構な沼にハマったのでメモ。
image.png

パスの問題?

まず疑ったのがパスの指定の仕方。あるあるですからね。
いろんなパスの指定の仕方を試しました。それでもうまく行きません。

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)
まあもちろんそんなはずはなく。
image.png

あれ、なんかChromeより長い・・?

error.gif
なぜか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側のログに普通にエラー内容書いてあった。)

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2