2012-04-29 19 views
1

私はサーバー上のリポジトリと通信するWebアプリケーションを作成しようとしています。私は画面上にデータを印刷したいと思います。実際には、私はRESTfulクライアントを作成しようとします。 。それらのビューの解析中にエラーが発生しましたか?

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
    <%@page contentType="text/html" pageEncoding="UTF-8"%> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
     "http://www.w3.org/TR/html4/loose.dtd"> 

    <html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Insert title here</title> 
    </head> 
    <body> 
    <h1>Get Author</h1> 

     <c:if test="${empty author}"> 
     No records found! 
     </c:if> 

     <c:if test="${!empty author}"> 
      <table style="border: 1px solid #333"> 
    <tr> 
    <td style="width: 100px">Id</td> 
    <td>${data.id}</td> 
    </tr> 

    <tr> 
    <td>Name</td> 
    <td>${data.name}</td> 
    </tr> 

    <tr> 
    <td>Address</td> 
    <td>${data.address}</td> 
    </tr> 


    </table> 
     </c:if> 

    </body> 
    </html> 

コントローラは、私は2つの異なる方法でコントローラを実装(以下である1:おそらく私は、表示データを参照することはできません構文解析エラーがある 私のJSPは以下のとおりです。

@Controller 
public class Contraller { 

protected static Logger logger = Logger.getLogger("controller"); 

private RestTemplate restTemplate = new RestTemplate(); 



@RequestMapping(value = "/datas", method = RequestMethod.GET) 
public String getDatas(Model model) { 


    HttpEntity<Data> entity = new HttpEntity<Data>(headers); 

    // Send the request as GET 
    try { 
     ResponseEntity<DataList> result = restTemplate.exchange("http://www../data/", 
         HttpMethod.GET, entity, DataList.class); 
     // Add to model 
     model.addAttribute("datas", result.getBody().getData()); 

    } catch (Exception e) { 
    } 

    // This will resolve to /WEB-INF/jsp/personspage.jsp 
    return "personspage"; 
} 

/** 
* Retrieves a single record from the REST provider 
* and displays the result in a JSP page 
*/ 

@RequestMapping(value = "/data", method = RequestMethod.GET) 
public String getMyData(@RequestParam("id") Long id, Model model) { 


     try{  

      Data results = restTemplate.getForObject("http://www.../data/{id}", 
             Data.class, id); 

      model.addAttribute("data", results); 


     }catch(Exception e){ 


     } 
      return "getpage"; 
} 

モデル)にコメントされている:リポジトリに

 @XmlRootElement(name = "data", namespace="http://www...") 
    @XmlAccessorType(XmlAccessType.FIELD) 
    public class Data { 

private Long id; 
private String name; 


public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 
public String getName() { 
    return name; 
} 
public void setFirstName(String name) { 
    this.name = name; 
} 
public String getAddress() { 
    return address; 
} 
public void setAddress(String address) { 
    this.address = address; 
} 

} 

4000件のデータがあります。 localhost:8080/Client_for_rest/data?id = 1 (すべてのIDが1から4000まで)は私にビューを返すが、データは表示されません。 4000より大きいIDを指定した場合、4001は真であるレコードがないことを返します。これによると、私はクライアントがサーバー側に接続すると仮定しますが、データがビュー上に表示されないようにするには問題があります(解析すると仮定します)。私はSpring MVCのフレームワークには慣れていません。私はマーシャラーとキャスターについて何かを読んでいますが、実装する方法はありません。実際には私の問題を解決する簡単な方法があるのだろうかと思っていました。私はpojo mavenの依存関係などを使用する必要がありますか?

+0

誰でもしてください!あなたのコントローラの –

+0

には、いくつかの例外ブロックがあります。スタックトレースを印刷してください。これは、コードがそこに入っていて、例外が抑制されているかどうかをチェックすることです。また、getPersonメソッドでブレークポイントを保持し、残りの呼び出しが目的の著者を返すかどうかを確認することもできます。これらは私が問題を絞り込むために考えているいくつかの手がかりです。 – raddykrish

+0

また、 'model.addAttribute()'の行のすぐ上にデバッガを走らせたり、ロギングを追加したりすることで、Authorオブジェクトに値が設定されているかどうかを確認できます。また、spring xmlを介してrestTemplateを作成し、そこにmediaType宣言を追加し、注釈をコントローラに挿入することも検討してください。そのコードをすべてServiceクラスに入れてテストすることができます。 – nickdos

答えて

1

戻り値の型が文字列である場合はmapオブジェクトとそのメソッドのパラメータとしてbindresultを使用します。

を追加し、そのマップオブジェクトに要素を追加します。

あなたは直接の例として

JSPページ

にそのマップオブジェクトにアクセスすることができます

@RequestMapping("/locationUpdate.do") 
    public String locationUpdate(Map<String, Object> map,@ModelAttribute("location") Location location, BindingResult result) { 
     map.put("location", locationService.getLocationByCode(locationcode)); 
     map.put("locGrp", listLocationGroup()); 

     return "location/locationAdd"; 
    } 

を今することができますあなたのJSP内で直接アクセス場所とlocGrp

+0

どうすればいいですか? –

+0

更新を見つけてくださいans – JOHND