前回は、JavaからDB情報をJSON形式でGET通信するところまでやりました。この状態ではindexにアクセスした時、JSON文字列でのHTML表示となってしまいます。今回は、JSON文字列をテーブルとしてHTML表示させたいと思います。
前回の記事はこちら↓
前回からの修正
一枚のHTML上に送られてきたJSONファイルを表示&インサートを実装したいと考えておりますので、JavaのControllerのPath(Value)を変更します。
// 表示用のパスをindexにします。
@RequestMapping(value="/index")
public String top() {
return "index";
}
// 前回indexで定義したJSON受け渡し用のパスをdataにします。
@RequestMapping(value="/data",method=RequestMethod.GET)
@Transactional
@ResponseBody
public List<AccountEntity> users(){
List<AccountEntity> users = repository.findAll();
return users;
}
index.htmlの作成
JSON表示には、thymeleafを使わないので、インポートしてもしなくてもどちらでもOKです。
JSONにはAjaxを使いますので、jQueryを読み込みます。
jQueryはダウンロードしてもよいですが、CDNを経由して読み込むことで、ダウンロードの手間が省けるため便利です。
jQueryダウンロードはこちら
CDNの読み込みは方法は、「jQuery CDN」と検索して新しいヴァージョンのものをscriptタグで呼び出してください。
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> </head>
JSONデータ表示のコードはこちらです↓
HTMLの中にJSを書いていることはご愛嬌ということでお願いします。。。
<h1>JSONで受け取って表示をしています</h1>
<table id="wrap">
<!-- この中にJSONデータが表示されます -->
</table>
<!-- JSON受け取りと表示 -->
<script>
var data = [];
$.ajax({
type : 'GET',
url : 'data',
dataType : 'json'
}).then(
function(json) {
for (var i = 0; i < json.length; i++) {
data.push({
// エスケープ回避のためのコメントなので無視してください<code>[i]</code>
'userName' : json[i].userName,
'enabled' : json [i].enabled,
'admin' : json [i].admin
});
}
;
var j = '<tr><th>名前</th><th>有効フラグ</th><th>管理者権限</th></tr>';
$("table#wrap").append(j);
for (var i = 0; i < data.length; i++) {
var h = '<tr><td>' + data[i].userName + '</td>'
+ '<td>' + data[i].enabled + '</td>' + '<td>'
+ data[i].admin + '</td></tr>';
$("table#wrap").append(h);
}
});
</script>
JSONから中身を取り出して、append()でHTMLを構築します。以上でHTML上にtableが出来上がりました!
次回は、insertのための受け渡しをJSONでやる。を実装していきます。

