riku__02
@riku__02

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Spring boot勉強中での質問

解決したいこと

Spring解体新書という書籍で6章部分を実施中です。

ログイン画面とユーザ登録画面のレイアウトが上手くいっていません。
解決方法を教えて下さい。

発生している問題・エラー

■ログイン画面
image.png
■新規登録画面
image.png

■本来描写したい画面
IMG_4683.JPEG

該当するソースコード

■login.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<meta>
<meta charset="UTF-8"></meta>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!--CSS読込-->
<link rel="stylesheet" th:href="@{/webjars/bootstrap/css/bootstrap.min.css}">
<link rel="stylesheet" th:href="@{/css/login/login.css}">
<!--JS読込-->
<script th:src="@{/webjars/jquery/jquery.min.js}" defer></script>
<script th:src="@{/webjars/bootstrap/css/bootstrap.min.js}" defer></script>
<title>ログイン</title>
</head>

<body class="bg-light">
	<div class="text-center">
		<form method="post" th:action="@{/login}" class="form-login">
			<h2>ログイン</h2>
			<!--ユーザID-->
			<div class="form-group">
				<label for="userId" class="sr-only">userId</label>
				<input type="text" class="form-control" placeholder="ユーザーID" name="userId">
			</div>
			<!--パスワード-->
			<div class="form-group">
				<label for="password" class="sr-only">password</label>
				<input type="text" class="form-control" placeholder="パスワード" name="password">
			</div>
			<input type="submit" value="ログイン" class="btn btn-primary"/>
		</form>
		<a th:href="@{/user/signup}">新規登録はこちら</a>
	</div>
</body>

■login.css

.form-login {
	width: 100%;
	max-width: 330px;
	padding: 15px;
	margin: auto;
}

■signup.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<meta>
<meta charset="UTF-8">
</meta>
<meta name="viewport" content="width=device-width, initail-scale=1, shrink-to-fit=no">
<!--CCS読込-->
<link rel="stylesheet" th:href="@{/webjars/bootstrap/css/bootstrap.min.css}">
<link rel="stylesheet" th:href="@{/css/login/login.css}">
<!--JS読込-->
<script th:src="@{/webjars/jquery/jquery.min.js}" defer></script>
<script th.src="@{/webjars/bootstrap/css/bootstrap.min.js}" defer></script>
<title>ユーザ登録</title>
</head>

<body class="bg-light">
	<div class="text-center">
		<form id="signup-form" method="post" action="/user/signup" class="form-signup">
			<h1 class="text-center">ユーザ登録</h1>
			<!--ユーザID-->
			<div class="form-group">
				<label for="userId">ユーザId</label>
				<input type="text" class="form-control">
			</div>
			<!--パスワード-->
			<div class="form-group">
				<label for="password">パスワード</label>
				<input type="text" class="form-control">
			</div>
			<!--ユーザー名-->
			<div class="form-group">
				<label for="userName">ユーザー名</label>
				<input type="text" class="form-control">
			</div>
			<!--誕生日-->
			<div class="form-group">
				<label for="birthday">誕生日</label>
				<input type="text" class="form-control">
			</div>
			<!--年齢-->
			<div class="form-group">
				<label for="age">年齢</label>
				<input type="text" class="form-control">
			</div>
			<!--性別-->
			<div class="form-group">
				<div th:each="item : ${genderMap}" class="form-check-inline">
					<input type="radio" class="form-check-input" th:value="${item.value}">
					<label class="form-check-label" th:text="${item.key}"></label>
				</div>
			</div>
			<!--登録ボタン-->
			<input type="submit" value="ユーザ登録" class="btn btn-primary w-100 mt-3" />
			</div>
		</form>
</body>
</html>

■signup.css

.form-signup {
	width: 100%;
	max-width: 330px;
	padding: 15px;
	margin: auto;
}

自分で試したこと

書籍とはほぼ相違ないと思っています。。
ですがうまくいきません。原因等あればアドバイス頂きたいです。
よろしくお願いいたします。

0

3Answer

  1. タイトルは質問内容の趣旨を書いてください。
    1. 「Spring boot勉強中での質問」では質問内容が一切わかりません。
  2. 「書籍とはほぼ相違ない」とのことですが、完全に一致させてください。
    1. 自然言語とは異なり、プログラミング言語では1文字でも相違があれば処理結果が大きく変わることがあります。そんな中で少し違う(=ほぼ相違ない)プログラムを書いて動かなければ、少し違う部分に原因があるんじゃない?としか思いません。少なくとも完全一致させたと胸を張って言える状態にしてください。その状態でも往々にして完全一致していませんので。
  3. html内で使われている form-group について、定義されている部分が見当たりませんので、それが原因かと。
1Like

@riku__02 さん
https://qiita.com/riku__02/questions/f3ec7bfec6c1565fdf92
こちらの質問で共有いただいたbuild.gradleを確認したところ、
依存関係の書き方が間違っているので、bootstrapの依存関係が追加されたことになっていません。したがって、htmlにCSS読み込み・JS読込の記述をしても、教材通りのレイアウトになっていないと思われます。

正しくない部分

image.png
Mavenの書き方が混在しているような記述になってます。

thymeleafを例に挙げて説明します。

Mavenでは、pom.xmlに以下のように依存関係を書きますね。

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
        ...
	</dependencies>

Gradleでは、build.gradleに以下のように依存関係を書く必要があります。

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    ...
}
0Like

Comments

  1. なので、jqueryを依存関係に追加したい場合は、以下のような書き方になる、といった具合です。

    dependencies {
        implementation 'org.webjars:jquery:3.5.1'
    

先のスレッド、

によると、上の質問の画像の「本来描写したい画面」ではなくて、以下の画像のようになるのが期待している結果なのですよね。先のスレッドでは期待通りになったのであれば、それはどうやって出したのですか?

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313034313133382f31306336636334302d373633382d313433382d643864662d6233376166343863306335652e706e.png

何にせよ、外部 css ファイルが読み込まれてないのが原因だと思いますので、パスが間違ってないか、ブラウザのキャッシュの問題はないか等調べてください。そこは質問者さんでないと分かりません。


【追伸】

@midoribi さんからも指摘されてますが、タイトルは一目見て問題・課題が分かるようにしてください。

例えばこのスレッドなら「Spring boot勉強中での質問」ではなくて「Spring boot でのログイン画面とユーザ登録画面のレイアウトの質問」というように。

今からでも遅くないので、質問欄を編集して書き換えてください。

0Like

Your answer might help someone💌