任何人都可以给我一个例子,说明如何从没有任何外部库的jsp返回以下json(除了Oracle Java标准的那些)?
[
{"label":"item 1", "value":"item 1", "id": 1},
{"label":"item 2", "value":"item 2", "id": 2},
{"label":"item 3", "value":"item 1", "id": 3}
];
Run Code Online (Sandbox Code Playgroud)
我试过了
<%-- Set the content type header with the JSP directive --%>
<%@ page contentType="application/json" %>
<%-- Set the content disposition header --%>
<%
// Returns all employees (active and terminated) as json.
response.setContentType("application/json");
response.setHeader("Content-Disposition", "inline");
%>
<%@ page language="java"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="oracle.apps.fnd.common.WebAppsContext"%>
<%@ page import="oracle.apps.fnd.common.WebRequestUtil"%>
<%@ page import="oracle.apps.fnd.common.ResourceStore"%>
<%@ page import="oracle.apps.fnd.common.VersionInfo"%>
[
{"label":"item 1", "value":"item 1", "id": 1},
{"label":"item 2", "value":"item 2", "id": 2},
{"label":"item 3", "value":"item 1", "id": 3}
];
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,因为我的jquery自动完成功能不起作用.
以下是自动完成代码的一部分:
<html>
<head>
$(function() {
var cust_ac = $("#autocomplete input#cust_input").autocomplete({
source: "xxpay_json_emp.jsp",
change: function (event, ui) { alert(ui.item.id); },
width: 500,
max: 3000,
selectFirst: false,
delay: 250,
minChars: 3,
matchContains: 1,
scroll: false,
scrollHeight: 200,
maxItemsToShow: 20
});
$('#autocomplete').submit(function() {
return false; // Cancel submit button on form.
});
});
function handleKeyPress(e, form)
{
var key = e.keyCode || e.which;
if (key == 13)
{
e.cancelBubble = true;
e.returnValue = false;
}
}
</script>
</head>
<body class='fdlbod'>
<div style='padding-left : 20px'>
<textarea id="holdtext" style="display:none;"></textarea>
<form id="autocomplete" name="autocomplete">
<%
out.println("Customer Name: ");
out.println("<input type='text' value='' name='cust_input' id='cust_input' size='80' onkeypress='handleKeyPress(event,this.form)' />");
%>
</form>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
您是否尝试从Web浏览器自行调用页面?输出是你所期望的吗?此外,使用Firebug或Chrome调试器检查响应标头/有效负载并验证一切正确.
更新我认为我钉了它 - 把那个该死的分叉拿去.
这是代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
</head>
<body>
<h1>Hello World!</h1>
<label for="autocomplete">Enter some text here</label>
<input id="autocomplete" name="autocomplete" />
<script type="text/javascript">
$(document).ready(function() {
$("#autocomplete").autocomplete({
source: 'json.jsp',
minLength: 2
});
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是JSON:
[
{"label":"item 1", "value":"item 1", "id": 1},
{"label":"item 2", "value":"item 2", "id": 2},
{"label":"item 3", "value":"item 1", "id": 3}
]
<%
// Returns all employees (active and terminated) as json.
response.setContentType("application/json");
%>
Run Code Online (Sandbox Code Playgroud)
从 JSP 文件创建 JSON 输出的最简单方法是使用“json-taglib”库。
http://json-taglib.sourceforge.net/
您所要做的就是:
1) 包含库 jar 文件。您可以通过直接下载 jar 文件或添加 pom 依赖项来包含它。可以在此处找到此 taglib 的 Maven 存储库; http://maven.nuxeo.org/nexus/content/repositories/public/atg/taglib/json/json-taglib/0.4.1/
2)在 taglib 定义中添加以下行
3)确保页面输出内容类型为json
4)然后只需使用标签库
这是示例代码
<%@page language="java" contentType="application/json;charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<json:object>
<json:property name="section" value="${section.name}"/>
<json:property name="itemCount" value="${fn:length(items)}"/>
<json:array name="items" var="cArticle" items="${items}">
<article:use name="cArticle">
<json:object>
<wf-custom-tags:encodeString
inputString="${article.fields.title.value}"
var="encodedTitle"/>
<json:property name="title" value="${encodedTitle}"/>
<c:remove var="encodedTitle" scope="page"/>
</json:object>
</article:use>
</json:array>
</json:object>
<c:remove var="items" scope="page"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
70873 次 |
最近记录: |