前提・実現したいこと
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

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。