model.addattribute()

z2acfund  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(435)

我刚开始在 Spring mvc的时候湿脚。我正在使用一个外部加密货币api。我尝试使用for-each循环迭代json响应,使用addattribute方法将每个值插入到模型中。我只得到最后一个值。
控制器:

@RequestMapping(value = "/Tables", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
    public String test(Model model) throws IOException {
        ResponseEntity<coins[]> test = getRequest();
        for (coins i : test.getBody()) {
            model.addAttribute("coins", i);
        }
        return "Tables";
    }

    public ResponseEntity<coins[]> getRequest() throws IOException {
        RestTemplate restTemplate = new RestTemplate();
        String apiUrl = "https://api.coingecko.com/api/v3/coins/list";
        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Arrays.asList(new MediaType[]{MediaType.APPLICATION_JSON}));
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> entity = new HttpEntity<String>(headers);
        ResponseEntity<coins[]> response = restTemplate.exchange(apiUrl, HttpMethod.GET, entity, coins[].class);
        if (response.getStatusCode() == HttpStatus.OK) {
            return response;
        } else {
            System.out.println("Error");
        }

        return response;
    }

型号:

@JsonProperty("id")
    public String id;
    @JsonProperty("symbol")
    public String symbol;
    @JsonProperty("name")
    public String name;

查看:

<tr th:each="coins : ${coins}">
     <td th:text="${coins.id}"></td>
     <td th:text="${coins.symbol}"></td>
     <td th:text="${coins.name}"></td>
     <td class="text-right">
          <a href="javascript:void(0)" class="btn btn-link btn-info btn-icon btn-sm like"><i class="tim-icons icon-heart-2"></i></a>
          <a href="javascript:void(0)" class="btn btn-link btn-danger btn-icon btn-sm remove"><i class="tim-icons icon-simple-remove"></i></a>
     </td>
</tr>

在此处输入图像描述
有什么建议吗?感谢您的帮助!

puruo6ea

puruo6ea1#

原来我不需要在控制器中为每个循环运行一次。我删除了这个循环,并使用addattribute方法将test.getbody()插入到模型中,它工作得很好。

相关问题