質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

2595閲覧

JavaのSpringboot、Thymleafを使ってWeb上に九九表を表示したいです。

sga11

総合スコア3

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/09/17 09:09

初心者のため、初歩的な質問になりますが、よろしくお願いいたします。
どうしてもここから次の案が浮かばず、どうか皆様、ご尽力いただければ幸いです。

問題点

HTMLで作成したTableの一つのセルの中に、掛け算の全ての積が入力されてしまいます。

求めているものとしては、
1行に対して9項目セルを作り、一の段の積が各セルに一つ入った状態で、それをfor文で9の段まで掛け算を繰り返し、九九表を完成させたいと思っています。

HTMLにはなるべく計算式を書かない様にしたいので、Java側でうまくfor文を使って何とかできないか悩んでおります。

#試したこと
Java側
・9つのインスタンスを作成(コードが読みにくいので×)
・int型⇒String型に変換し、splitメソッドを利用(複雑で一旦保留しました、、、)

HTML側
・Thymeleafのth:eachを使いループ(配列がそのまま繰り返されてしまいました)

・演算子が使えたので、1の段をth:textで表示し、*2、*3、*4、、と
記述をしていった。(HTMLに計算式を書かなくても他に方法無いか、、、?と思い保留)

#コード

Java

1 2import java.util.ArrayList; 3import java.util.List; 4 5import org.springframework.stereotype.Controller; 6import org.springframework.ui.Model; 7import org.springframework.web.bind.annotation.RequestMapping; 8import org.springframework.web.bind.annotation.RequestMethod; 9 10@Controller 11public class CountNumberWeb { 12 13 @RequestMapping(value = "/count", method = RequestMethod.GET) 14 public String kukuList(Model model) { 15 16 List<Integer> kuku = new ArrayList<>(); 17 18 // 掛け算 19 20 for (int i = 1; i <= 9; i++) { 21 22 for (int j = 1; j <= 9; j++) { 23 24    kuku.add(i*j); 25 26 } 27 model.addAttribute("kuku", kuku); 28 } 29 return "count"; 30 } 31} 32

HTML

1 2<!DOCTYPE html> 3<html xmlns="http://www.w3.org/1999/xhtml" 4 xmlns:th="http://www.thymeleaf.org"> 5 6<head> 7<meta charset="UTF-8"> 8<title>Count</title> 9</head> 10 11<style type="text/css"> 12 13tr {width: 150px; 14} 15 16table, tr, th { 17 border: 1px solid #bbb; 18} 19</style> 20 21<body> 22 <h1>九九表</h1> 23 24 <table> 25 26 <!-- 見出し--> 27 <tr> 28     <th>九九表</th> 29 <th>1</th> 30 <th>2</th> 31 <th>3</th> 32 <th>4</th> 33 <th>5</th> 34 <th>6</th> 35 <th>7</th> 36 <th>8</th> 37 <th>9</th> 38 39 </tr> 40 41 <!-- 2行目 1の段 --> 42 43 <tr> 44 <th>1</th> 45 <td th:text=${kuku}></td> 46 </tr> 47 48  <!-- 3行目 2の段 --> 49 50 <tr> 51 <th>2</th> 52 <td th:text=${kuku}></td> 53 </tr> 54 55 </table> 56</body> 57</html> 58

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

後程私も試してみますが、わざわざJava側で計算しなくても、numbers.sequence使えばThymeleaf側だけで出来そうに思います。

※未検証

Thymeleaf

1 <table> 2 3 <tr> 4 <th>九九表</th> 5 <th th:each="i : ${#numbers.sequence(1, 9)}" th:value="${i}" th:text="${i}"></th> 6 </tr> 7 </table>

Thymeleaf

1 <table> 2 <tr> 3 <th>九九表</th> 4 <th th:each="i : ${#numbers.sequence(1, 9)}" th:value="${i}" th:text="${i}"></th> 5 </tr> 6 <th:block th:each="left : ${#numbers.sequence(1, 9)}" th:value="${left}"> 7 <tr> 8 <td th:text="${left}"></td> 9 <th:block th:each="right : ${#numbers.sequence(1, 9)}" th:value="${right}"> 10 <td th:text="${left * right}"></td> 11 </th:block> 12 </tr> 13 </th:block> 14 </table>

あとはJava側で同じようにHTMLをStringに作ってutextで出力すれば「HTML側で計算」にはなってないかなと。

いずれにしても、あっちもこっちも何回もループさせるのはパフォーマンス的に良くないと思います。

投稿2021/09/17 09:59

編集2021/09/17 10:42
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/09/17 10:11

>HTMLにはなるべく計算式を書かない様にしたい これがどこまでを想定しているのかが分からないけど・・
sga11

2021/09/18 05:40 編集

Java側のfor文ばかりを意識してましたが、th:eachで他にもループさせる方法があったんですね、、、 まだまだ知識不足なので、記載いただいたコードを元に記述してみようと思います! ありがとうございました!
m.ts10806

2021/09/17 20:34

JSPでもそうですが、結局はThymeleafもJavaなので大体同じようなことができるということですね。 ドキュメント確認するようにしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問