我想将Struts2动作类的json数组传递给jsp页面。我正在尝试将数据集作为字符串发送。我想知道的是,如何读取javascript中的数据。
这是我在动作课中的方法
private InputStream inputStream;
/* getter and setter*/
public String getClientMilestone() throws DAOTransientException, DBConfigException{
PaymentScheduleDao paymentScheduleDao = new PaymentScheduleDao();
List <PaymentMilestone> paymentScheduleInfo = paymentScheduleDao.getClientMilestoneInfo(projectId);
String result = "[";
for(int i=0; i<paymentScheduleInfo.size(); i++){
result += "{"+"'"+"item"+i+"' : {"+ "'"+"milestoneName"+ "'"+":"+"'"+paymentScheduleInfo.get(i).getMilestone_name()+"'"+"}"+"},";
}
result += "]";
System.out.println("result is "+result);
inputStream = new StringBufferInputStream(result);
return "success";
}
打印如下
result is [{'item0' : {'milestoneName':'milestone 1'}},{'item1' : {'milestoneName':'milestone 2'}}]
struts.xml
<package name="ClientMilestone" namespace="/" extends="struts-default">
<action name="getClientMilestone" class="packageName.PaymentScheduleAction" method="getClientMilestone">
<result name="success" type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
<result name="failure">./LandingPage.jsp</result>
<result name="error">./Error.jsp</result>
</action>
</package>
jsp中的javascript函数
function createOrViewPs() {
var projectId = document.getElementById("projectId").value;
$.ajax({
method: "GET",
url: "getClientMilestone",
data: {"projectId" : projectId},
traditional: true,
success:
function(result){
var jsonArr = result;
for (var i=0; i<jsonArr.length; i++)
for (var name in jsonArr[i]) {
alert("Item name: "+name);
alert("Source: "+jsonArr[i][name].milestoneName);
}
},
error:
function(){
alert("fail");
}
});
}
因为您从服务器返回了带有stream
结果类型的JSON字符串化版本(请注意,该流结果类型可能不合适,请参见下文),所以您需要使用JSON.parse()将其解析为JSON,如果您使用的是jQuery最好使用$
.each
var jsonArr = JSON.parse(result);
$.each (jsonArr, function(index, value){
$.each (value, function(key, value){
console.log("Item name: "+key);
console.log("Source: "+value.milestoneName);
});
});
您做错的是手动构建json。您应该使用将Java对象序列化为JSON的工具。Struts2 在软件包中具有json-lib可用的jar,可用于序列化为json,或者,如果您正在使用,struts2-json- plugin
则它具有内置的序列化器。如果您正在使用,struts2-rest- plugin
则可以使用其他串行器,例如Jackson。您选择用于序列化数据的库的方式超出了此答案的范围。您可以在SO和Struts网站上找到许多示例。它们中的大多数使用JSON插件返回浏览器支持的JSON对象,即不需要解析,但是对JSON进行解析对于避免错误和数据丢失很有用。
问题内容: 谁能告诉我如何在JSP中将JavaScript值传递给Scriptlet? 问题答案: 您的javascript值是客户端,您的scriptlet正在服务器端运行。因此,如果您想在scriptlet中使用javascript变量,则需要提交它们。 为此,可以将它们存储在输入字段中并提交表单,或者执行ajax请求。我建议您对此进行研究。
我用jetty web server实现了这一点。 前提是web服务器已经启动。 我用JSP编写的主页试图从传入连接中获取IP地址。 因此,我将它分成两个JSP页面。(比方说,a.jsp和b.jsp) b、 jsp用于获取客户端ip地址,然后在 a、 jsp专门用于显示从b.jsp获得的ip地址。 我有一个静态字符串在我的b.jsp用于存储传入的连接IP地址。 两个问题: > 如何将值从b.jsp
我试图弄清楚如何将存储在整数数组中的数组输出到jsp页面,最好是输入字段。 有人知道如何在jsp页面上输出数组吗? 我可以在Eclipse中将数组序列打印到控制台,但不确定如何使用jsp页面: 我使用以下解决方案为一个数字实现了这一点: Servlet(FibonacciServlet): Jsp页面(结果):
这是将自定义对象从servlet传递到ajax并显示在jsp页面中的任何方法吗?当从jsp页面接受inventory id时,它将传递到servlet,并根据id获取inventory对象。之后,我想将inventory对象传递回ajax并显示在jsp页面中
我已经创建了liferay portlet,在其中,我只需从Api获取天气数据,并通过ajax获取数据,如下所示,现在我想将这些json数据从ajax传递到portlet页面,并将其保存在portlet文件中。我是liferay的新手,请任何人指导如何做到这一点。 这是portlet文件
我想在我的组件中触发一个动作。这是一个表示组件,不需要重新创建。路由器实现是使用反应路由器冗余完成的。 main.js 应用:日新社: header.js: employee.js: action-creator.js: 道具将不包含动作,因为我没有将它绑定到道具上。我尝试在App.js中编写mapStateToProps和mapDispatchToProps,如下所示: 导出默认连接(mapSt