2

JSP/JSTL を使用して JSON 出力を生成する API を作成しようとしていますが、問題を特定できません。ここで、配列の読み取りに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 に答える