【问题标题】:Json array to html table - JSTLJson 数组到 html 表 - JSTL
【发布时间】:2014-06-16 14:56:41
【问题描述】:

我是JSP & JSTL 的新手,我有一个如下的 json 数组:

[ { "id" : 1, "name" : "A" }, { "id" : 2, "name" : "b" }]

我需要在 HTML 表格视图中打印。

我试过用here说的代码

<table>
    <c:forEach items="${persons}" var="person">
        <tr>
            <td>${person.name}</td>           
        </tr>
    </c:forEach>
</table>

但是我收到了这个错误

javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String

有人纠正我哪里出错了。

【问题讨论】:

  • json 转换成人员列表了吗?并且该列表仅在 html 页面中使用?
  • 显示你的打印 HTML 表格方法。
  • @bigGuy 这是我用的。
    ${person.name}
  • @Parthi04 - 那么您希望 JSTL 如何工作?如果您向 JSTL 提供这样的 json 字符串,它显然无法找到其中包含名称字段/属性的对象。将您的 json 解析为人员对象列表并在 JSTL 中使用它
  • 我打赌你没有从 eexample 复制这一行: List persons = new Gson().fromJson(jsonPersons, new TypeToken>() {}.getType()) ;

标签: java hibernate jsp jstl


【解决方案1】:

您不能直接使用它,因为 jstl 将值视为字符串。您可能需要将其转换为 servlet 中的某个 java 对象并在 jstl 中使用它。您可以使用jacksongson 或其他一些库进行转换。

或者如果你不想做所有这些并保持简单,你可以使用 jquery 而不是 jstl 之类的

var jsonData = '[ { "id" : 1, "name" : "A" }, { "id" : 2, "name" : "b" }]';

$($.parseJSON(jsonData)).map(function () {
       return '<tr class="child"><td>' + this.name + '</td></tr>';
}).appendTo('#myTable tbody');

其中“myTable”是表的ID。

如何在控制器中做

您的控制器中有DetailedJson。这可以是 json 数组或字符串。然后在控制器中您可以使用 gson 执行以下操作,然后您的代码应该可以工作

String detailedJson = "[ { 'id' : 1, 'name' : 'A' }, { 'id' : 2, 'name' : 'b' }]";
Gson gson = new Gson();
Type listType = new TypeToken<List<Person>>() {}.getType();
List<Person> persons = gson.fromJson(detailedJson, listType);
request.setAttribute("persons", person);

所以现在您的请求范围有一个带有 id 和名称的 Person 对象列表。您的 jstl 可以将其作为创建表而无需任何更改。这个人只是一个pojo。例如。

public class Person {

    private int id;
    private String name;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

希望这会有所帮助。

【讨论】:

  • 我对 jstl ans jsp 非常陌生。我有一个变量 ${DetailedJson} 直接打印来自控制器的 json putput ...那我该如何继续?跨度>
猜你喜欢
  • 2013-08-02
  • 1970-01-01
  • 2021-09-06
  • 2017-09-17
  • 2020-05-27
  • 2021-04-14
  • 1970-01-01
  • 2014-09-01
  • 2013-11-14
相关资源
最近更新 更多