2

javaコードではなく、jspページのjson出力からユーザーの詳細を抽出するにはどうすればよいですか?

${users.user.firstname} などが機能しません。

コードは正常に機能しています。問題は、json リストを抽出できないことです。

@RequestMapping(value = "asjson", method = RequestMethod.GET)
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public String getAsJson(ModelMap model)
{
    Client client = Client.create();
    WebResource service = client.resource(getBaseURI());
    String userAsJson =  service.path("user/").path("getall").accept(MediaType.APPLICATION_JSON).get(String.class);
    model.addAttribute("json", userAsJson);

    return "asjson";

}

private static URI getBaseURI()
{
    return UriBuilder.fromUri("http://localhost:8080/xxxxxxx/").build();
}

そして、jsp ページでは、El タグを使用して foreach ループでユーザーの詳細を出力し、次のようにします。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4  /loose.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">

<body>
<c:forEach var="users" items="${json}">
${users}
</c:forEach>

リストの一部は次のとおりです。

 {
  "user": [
    {
        "userid": "1",
        "firstname": "xxxxx",
        "lastname": "xxxxxxx",
        "username": "xxxxxx",
        "password": "xxxxxx",
        "email": "xxxxxxx",
        "isEnabled": "true",
        "address": {
            "street": "xxxxxxxxx",
            "zipcode": "xxxxxxx",
            "city": "xxxxxxx"
        },
        "roles": [
            {
                "roleid": "1",
                "rolename": "ROLE_ADMIN"
            },
            {
                "roleid": "2",
                "rolename": "ROLE_USER"
            }
        ]
    },

    {
        "userid": "2",
        "firstname": "jesica",
        "lastname": "biel",
        "username": "jesica",
        "password": "biel",
        "email": "jesica@sex.se",
        "isEnabled": "true",
        "address": {
            "street": "sexstreet",
            "zipcode": "66666",
            "city": "sexistan"
        },
        "roles": {
            "roleid": "5",
            "rolename": "ROLE_USER"
        }
    }
]
}

ありがとう

4

0 に答える 0