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

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

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

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

4952閲覧

SpringとAngularを連動し、HTMLでDBの内容を抽出して表示させたいです

rinimaruranran

総合スコア36

Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2018/11/16 03:21

編集2018/11/19 00:04

前提・実現したいこと

Angularの勉強を初めて5日程度、プログラミングを始めて3ヶ月程の初心者です。

現在、STSで作成したプログラム(idを指定して既存DBの内容をJSON形式で表示させる)をAngularと連動させて、HTML上にJSON形式のデータを項目ごとに抽出して表示させたいです。
最終的には、HTML上でidを入力して送信するとDBを検索し、該当するカラムを引っ張ってきて、検索結果として必要なセルの情報だけ抽出して表示させるSPAを作ろうとしています。

参考にしているのは、こちらのサイトです。

上記サイトの手順に沿って作成いているのですが、実行すると画像のようなエラーが出てしまいました。

イメージ説明
・gachaIdが定義されていない(data.gachaIdと呼び出していますが、STS上で作成したHTML内のJavaScriptでconsole.log(data.gachaId)を記述すると、正しく表示されました)
・JSON形式の「:」に対してSyntaxErrorが出ている
etc...

エラーが発現してから1日ほど経つのですが、どれも原因がわからず、煮詰まっている状態です。
一歩でも前に進むために、まずどれか1つだけでも解決したいので、気になる点がありましたらご教示頂きたいです。

下記資料をご参照の上、どうかよろしくお願い致します。
[STS]
・SampleDataController.java
・「http://localhost:8080/sampleData/data」で表示されるJSON
[Angular]
・app.component.ts
・app.component.html
・dashboard.component.ts
・dashboard.html
・data.service.ts

SampleDataController.java

java

1package com.example.sample.controller; 2 3import java.util.Optional; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.web.bind.annotation.RequestMapping; 7import org.springframework.web.bind.annotation.RequestMethod; 8import org.springframework.ui.Model; 9import com.example.sample.entity.sales.MGachaCountry; 10import com.example.sample.repository.sales.MGachaCountryDao; 11import com.example.sample.entity.sales.MGacha; 12import com.example.sample.repository.sales.MGachaDao; 13import org.springframework.stereotype.Controller; 14import org.springframework.web.bind.annotation.RestController; 15 16@RestController 17 public class SampleDataController { 18 19 @Autowired 20 private MGachaCountryDao MGachaCountryDao; 21 22 @RequestMapping(value = "/sampleData/data", method = RequestMethod.POST) 23 public Optional<MGachaCountry> data(Integer gachaId, Integer countryCd) { 24 Optional<MGachaCountry> re = MGachaCountryDao.selectById(gachaId, countryCd); 25 return re; 26 } 27 28 @RequestMapping(value = "/sampleData/data", method = RequestMethod.GET) 29 public Optional<MGachaCountry> data() { 30 Integer gachaId = 10186; 31 Integer countryCd = 1; 32 Optional<MGachaCountry> re = MGachaCountryDao.selectById(gachaId, countryCd); 33 return re; 34 } 35 } 36

http://localhost:8080/sampleData/data」で表示されるJSON

json

1{"gachaId":NNNNNN,"countryCd":NNNNNN,"gachaTitle":"XXXXXX","bannerImageUrl":"XXXXXX","detailImageUrl":"XXXXXX","information":"XXXXXX","createTime":"XXXXXX","updateTime":"XXXXXX","bannerHeaderImageUrl":"XXXXXX","termBanner":"XXXXXX"}

app.component.ts

TypeScript

1import { Component } from '@angular/core'; 2 3@Component({ 4 selector: 'app-root', 5 templateUrl: './app.component.html', 6 styleUrls: ['./app.component.css'] 7}) 8export class AppComponent { 9 title = 'Gacha Information Searcher'; 10} 11

app.component.html

html

1<div class="main"> 2 : 3 <my-dashboard></my-dashboard> 4 : 5</div>

dashboard.component.ts

TypeScript

1import {Component, OnInit} from "@angular/core"; 2import {Data} from "../../data"; 3import {DataService} from "../../services/data.service"; 4 5@Component({ 6 selector: 'my-dashboard', 7 templateUrl: './dashboard.component.html' 8}) 9 10export class DashboardComponent implements OnInit{ 11 12 //コンポーネント生成時の処理 13 constructor(private dataService: DataService){} 14 15 //商品リスト 16 dataList : Data; 17 18 //画面初期表示イベント処理 19 ngOnInit(): void { 20 this.dataService.data().subscribe( 21 result => this.setDatas(result), 22 error => alert('通信エラー' + error) 23 ); 24 } 25 26 //Web APIから取得したデータを商品リストにセットする 27 setDatas(result): void { 28 if(result.error) { 29 alert('Web APIエラー' + result.message); 30 } 31 32 this.dataList = result.data; 33 } 34}

dashboard.html

html

1<div> 2 <p>ああ{{data.gachaId}}</p> 3 <p>いい{{data.gachaTitle}}</p> 4 <p>うう{{data.bannerImageUrl}}</p> 5 <p>ぬん</p> 6</div>

data.service.ts

TypeScript

1import { Injectable } from '@angular/core'; 2import { Headers, Http, Jsonp, RequestOptionsArgs, RequestOptions, URLSearchParams} from '@angular/http'; 3import {Observable} from "rxjs/Observable"; 4import "rxjs/add/operator/map"; 5 6import { Data } from '../data'; 7 8@Injectable() 9export class DataService { 10 11 //RestAPIのURL 12 private datasUrl = 'http://localhost:8080/sampleData/data'; 13 //JSONPコールバック関数名(Angular固有値) 14 CALLBACK = 'JSONP_CALLBACK'; 15 16 17 //コンストラクタで利用するモジュールをインスタンス化 18 constructor(private http: Http, private jsonp: Jsonp) { } 19 20 21 //商品一覧取得 22 data(): Observable<Data> { 23 //リクエストパラメータセット 24 let option : RequestOptions; 25 option = this.setHttpGetParam(this.datasUrl); 26 27 //レスポンス返却 28 return this.jsonp.request(this.datasUrl, option) 29 .map((response) => { 30 let content; 31 let obj = response.json(); 32 content = { 33 error: null, 34 data: obj 35 }; 36 console.dir(content); 37 return content; 38 39 }); 40 41 } 42 43 44 //Http(Get)通信のリクエストパラメータをセットする 45 private setHttpGetParam(url: string): RequestOptions { 46 let param = new URLSearchParams(); 47 param.set("callback", this.CALLBACK); 48 let options: RequestOptionsArgs = { 49 method: "get", 50 url: url, 51 search: param 52 }; 53 return new RequestOptions(options); 54 } 55 56} 57

補足情報(FW/ツールのバージョンなど)

Mac os
STS
Angular

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

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

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

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

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

guest

回答1

0

自己解決

service内の記述が精査できていなかったため、getメソッドをsetメソッド等に変更することで解決することが出来ました。

投稿2018/11/19 06:08

rinimaruranran

総合スコア36

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問