2017-02-13 7 views
-1

私は簡単なSpring Webアプリケーションを構築しました。私は@RequestMappingと、このシンプルな@Controllerを持っているが、私はそれを実行したとき、私はURLをヒットすることはできません。私の単純なSpring Webサービスに何が問題なのですか?

http://localhost:8080/labutil/all 

は私が間違って何をしているのですか?

package com.mycompany.ion.labutil.controller; 

import java.util.List; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

import com.nokia.ion.labutil.service.LabService; 

@Controller 
public class LabController { 

    @Autowired 
    private LabService labService; 

    @RequestMapping(value = "/all", method = RequestMethod.GET) 
    public String getAll() throws Exception { 
     List<String> list = labService.getAll(); 

     // build fake little json formatted data 
     StringBuffer sb = new StringBuffer("{"); 
     for (String s : list) { 
      sb.append("{ "+s+" }, "); 
     } 
     sb.append("}"); 

     return sb.toString(); 
    } 


} 
+2

また、http:// localhost:8080/allを試すことができますか?私にはURLの問題のように思えます。 – Kael53

+0

application-context.xmlファイルを投稿してください。 – SachinSarawgi

+0

あなたは '/ labutil'をコントローラのどこにでも設定していません。 @ Kael53の提案がうまくいくはずです(おそらくURLにアプリコンテキストを追加する) – Alfabravo

答えて

1

コントローラを@RestControllerとして注釈を付けるか、メソッドに@ResponseBody注釈を追加する必要があります。このように、このメソッドがHTTPボディレスポンスとしてオブジェクトを返すことをSpringに伝えます。 @RestControllerは、@Controllerアノテーションと@ResponseBodyアノテーションの両方でアノテーションされた便利なアノテーションです。

Hereこの注釈を使用する理由

一方
@RequestMapping(value = "/all", method = RequestMethod.GET) 
@ResponseBody 
public String getAll() throws Exception { 
    List<String> list = labService.getAll(); 

    // build fake little json formatted data 
    StringBuffer sb = new StringBuffer("{"); 
    for (String s : list) { 
     sb.append("{ "+s+" }, "); 
    } 
    sb.append("}"); 

    return sb.toString(); 
} 

、あなたは、オブジェクトではなく、解析された文字列のJSONを返すジャクソンまたはGsonのようないくつかのJSONライブラリを追加し、それぞれのライブラリビューの実装とViewを設定する必要があります。

関連する問題