2

我正在尝试使用 JSP/JSTL 编写一个 API 来生成 JSON 输出,但它无法正常工作,我无法找出问题所在。在使用C 标记库读取数组时,我遇到了问题。这里是代码:

<%@ page import="java.lang.*,java.io.*,java.util.*,java.sql.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/abc" user="root"  password="xxx"/>
<sql:query dataSource="${snapshot}" var="result" sql="SELECT countries_name,countries_iso_code_2  FROM countries"/>

<json:object> 
    <json:object name="list">
        <c:forEach var="row" items="${result.rows}">
        <json:object items="countries">
            <json:property name="Country" value="${row.countries_name}"/>
            <json:property name="iso" value="${row.countries_iso_code_2}"/>
        </json:object>
        </c:forEach>
  </json:object>
</json:object> 

我得到的例外是

org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.ws.indexajson_jsp
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:178)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

请帮我解决问题。谢谢。

4

1 回答 1

2

我刚刚解决了它。我刚刚删除了C 标记库 将 json 生成代码更改为

<json:object> 
    <json:object name="list">
        <json:array name="countries" var="row" items="${result.rows}">
            <json:object>
                <json:property name="Country" value="${row.countries_name}"/>
                <json:property name="iso" value="${row.countries_iso_code_2}"/>
            </json:object>
        </json:array>
    </json:object>
</json:object> 

它有效。我得到的问题是我的数组语法。

于 2012-04-19T07:08:52.790 回答