1

サーバー上のリポジトリと接続するWebアプリケーションを作成しようとしていますが、データを画面に印刷したいと思います。実際、私はRESTfulクライアントを作成しようとしています。おそらく、表示データを表示できない解析エラーがあります。私のjspは次のとおりです。

 <%@ 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つはコメントされています)

  @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個のデータがあります。次のURLを指定すると:localhost:8080 / Client_for_rest / data?id = 1(1から4000までのすべてのID)はビューを返しますが、データは表示されません。4000より大きいIDを指定すると、つまり4001は、真のレコードがないことを返します。これによると、クライアントはサーバー側に接続していると思いますが、ビューでデータを支払うことができないという問題があります(解析にあると思います)。私はSpringMVCフレームワークに慣れておらず、マーシャラーとキャスターについて何かを読んでいますが、それらを実装する方法がわかりません。実際、私は自分の問題を解決するもっと簡単な方法があるかどうか疑問に思っていました。pojo mavenの依存関係などを使用する必要がありますか?

4

1 に答える 1

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 で location と locGrp に直接アクセスできるようになりました

于 2012-04-30T12:46:56.943 に答える