js函数中怎么获取request中值的属性

kangbo818 2009-04-10 09:07:10
requtst.setAttribute("train",trains);
trains是list,里面放三个Train实体,Train有number,speed等属性

怎么在函数中遍历出每个trains,并获取出属性值,如speed=?


<script Language="javascript">
function getValue
{
.........
document.write("<%=request.getAttribute("traintrack")%>") //只能获取到一个字符串

}
</script>
...全文
33266 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
joan_xyq 2010-03-19
  • 打赏
  • 举报
回复
遇到类似问题,看看结果咯
luojihaidao 2009-04-10
  • 打赏
  • 举报
回复
LZ 的代码都出来了, 没有什么好说的了, 不过还是建议用JSTL。
Ghost_520 2009-04-10
  • 打赏
  • 举报
回复

测试通过了

index.jsp

<%@ page language="java" import="java.util.*,com.servlet.bean" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<body>

<script type="text/javascript">
<%
ArrayList list = (ArrayList)request.getAttribute("list");
for(int i=0;i<list.size();i++){
bean Bean = (bean)list.get(i);
%>
var name = '<%=Bean.getName()%>'
alert(name);
<%
}
%>
</script>
</body>
</html>


servlet.java

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class servlet extends HttpServlet {
public servlet() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
bean Bean = new bean();
Bean.setName("liubin");
Bean.setPwd("123");

bean Bean2 = new bean();
Bean2.setName("aaa");
Bean2.setPwd("456");

bean Bean3 = new bean();
Bean3.setName("bbb");
Bean3.setPwd("789");

ArrayList list = new ArrayList();
list.add(Bean);
list.add(Bean2);
list.add(Bean3);

request.setAttribute("list", list);

request.getRequestDispatcher("../index.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request ,response);
}
public void init() throws ServletException {
// Put your code here
}

}

kangbo818 2009-04-10
  • 打赏
  • 举报
回复
requtst.setAttribute("train",trains);
traintrack就那个train,里面的是多个Train类得List,
想取到里面每个Train类得属性
luojihaidao 2009-04-10
  • 打赏
  • 举报
回复
document.write("<%=request.getAttribute("traintrack")%>") //只能获取到一个字符串

你的traintrack 是一个什么? 数组 List 对象?? 每一个的处理方式都不一样。


1.对象 如果是String

var v = "<%=request.getAttribute("traintrack")%>";

如果是定义的对象 例如: class A{private String a1;private int a2;//get set方法自己写吧。}

那你可以:
function a(a1,b1){
this.a1 =a1;
this.b1 = b1;
}
var v = new a("<%=(A)(request.getAttribute("traintrack")).getA1()%>","<%=(A)(request.getAttribute("traintrack")).getA2()%>")


2 数组 List 方法差不多。

都是遍历数组或List, 在JS定义相同结构的数据存储单元,将JAVA的数年转为JS的数据。


注意: JAVA---> JS 都是通过字符串进行转化的。


不过数组有好的转化方法, 就是在后台把数据拼成[1,2,3] 这样的形式。

在页面就可以直接这样写了: var v = request.getAttribute("traintrack");

最后建议LZ用JSTL, 直接在JSp中用JAVA是不好的行为。
luojihaidao 2009-04-10
  • 打赏
  • 举报
回复
document.write("<%=request.getAttribute("traintrack")%>") //只能获取到一个字符串

你的traintrack 是一个什么? 数组 List 对象?? 每一个的处理方式都不一样。


1.对象 如果是String

var v = "<%=request.getAttribute("traintrack")%>";

如果是定义的对象 例如: class A{private String a1;private int a2;//get set方法自己写吧。}

那你可以:
function a(a1,b1){
this.a1 =a1;
this.b1 = b1;
}
var v = new a("<%=(A)(request.getAttribute("traintrack")).getA1()%>","<%=(A)(request.getAttribute("traintrack")).getA2()%>")


2 数组 List 方法差不多。

都是遍历数组或List, 在JS定义相同结构的数据存储单元,将JAVA的数年转为JS的数据。


注意: JAVA---> JS 都是通过字符串进行转化的。


不过数组有好的转化方法, 就是在后台把数据拼成[1,2,3] 这样的形式。

在页面就可以直接这样写了: var v = request.getAttribute("traintrack");

最后建议LZ用JSTL, 直接在JSp中用JAVA是不好的行为。
ailin84 2009-04-10
  • 打赏
  • 举报
回复
自己写的没找到
网上抄的,自己多baidu啊

function GetUrlParms()
{
var args=new Object();
var query=location.search.substring(1);//获取查询串
var pairs=query.split("&");//在逗号处断开
for(var i=0;i<pairs.length;i++)
{
var pos=pairs[i].indexOf('=');//查找name=value
if(pos==-1) continue;//如果没有找到就跳过
var argname=pairs[i].substring(0,pos);//提取name
var value=pairs[i].substring(pos+1);//提取value
args[argname]=unescape(value);//存为属性
}
return args;
}
kangbo818 2009-04-10
  • 打赏
  • 举报
回复
.........,继续等
Ghost_520 2009-04-10
  • 打赏
  • 举报
回复

<script Language="javascript">
function getValue() // 加个 ()
{
.........
// document.write("<%=request.getAttribute("traintrack")%>") //只能获取到一个字符串
var array = ${requestScope.trantrack};
alert(array.length);
for(var i in array){
alert(array[i]);
}
}
</script>
kangbo818 2009-04-10
  • 打赏
  • 举报
回复
上面代码不行,程序不能执行
wNvShine 2009-04-10
  • 打赏
  • 举报
回复
用JSON格式返回给JS会好处理一点吧。。
岑子哥 2009-04-10
  • 打赏
  • 举报
回复
变成数组试试呢?
Ghost_520 2009-04-10
  • 打赏
  • 举报
回复

试试,我也不知道行不行。


<script Language="javascript">
function getValue
{
.........
// document.write("<%=request.getAttribute("traintrack")%>") //只能获取到一个字符串
var array = ${requestScope.trantrack};
alert(array.length);
for(var i in array){
alert(array[i]);
}
}
</script>
kangbo818 2009-04-10
  • 打赏
  • 举报
回复
解决的,多谢兄弟,结账了
kangbo818 2009-04-10
  • 打赏
  • 举报
回复
代码几乎是复制你的

function lineTrack(x3,y3,x4,y4) //72行
{
document.write("---------");
<%
ArrayList list = (ArrayList)request.getAttribute("traintrack");
for(int i=0;i<list.size();i++){ //80行
Train Bean = (Train)list.get(i);
%>
var name = '<%=Bean.getNumber()%>'
document.write(name);
<%
}
%>


}





错误:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /traintrack1.jsp at line 80
77:
78: <%
79: ArrayList list = (ArrayList)request.getAttribute("traintrack");
80: for(int i=0;i<list.size();i++){
81: Train Bean = (Train)list.get(i);
82: %>
83: var name = '<%=Bean.getNumber()%>'

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:555)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

java.lang.NullPointerException
org.apache.jsp.traintrack1_jsp._jspService(traintrack1_jsp.java:148)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:390)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.2 logs.

Ghost_520 2009-04-10
  • 打赏
  • 举报
回复

把 function 括号看仔细啊,


<script type="text/javascript">
function init(){
<%
ArrayList list = (ArrayList)request.getAttribute("list");
for(int i=0;i<list.size();i++){
bean Bean = (bean)list.get(i);
%>
var name = '<%=Bean.getName()%>'
alert(name);
<%
}
%>
}

init();
</script>

Ghost_520 2009-04-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 kangbo818 的回复:]
我上面代码有错啊,那个代码不在function里面就没错
愁~~
[/Quote]

你贴上你的代码。
kangbo818 2009-04-10
  • 打赏
  • 举报
回复
72行就是我页面上的
ArrayList list = (ArrayList)request.getAttribute("traintrack");
zhubo_1117 2009-04-10
  • 打赏
  • 举报
回复
<script language="javaScript">
Request = {
QueryString : function(item){
var svalue = location.search.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)","i"));
return svalue ? svalue[1] : svalue;
}
}
Request.QueryString("参数")
</script>
kangbo818 2009-04-10
  • 打赏
  • 举报
回复
我上面代码有错啊,那个代码不在function里面就没错
愁~~
加载更多回复(4)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧