javascript接受struts传过来的数组问题
我想在jsp页面里面用javascript定义一个数组来接受java传过来的数据怎么老是收不到数据,传一个字符串可以,传一个字符串数组就没数据了?
jsp页面
Java代码 [code="java"]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Insert title here
<br><br> var string = '<s:property value="sometext"/>';<br><br> var idx = 1;<br><br> function dosomething()<br><br> {<br><br> idx ++;<br><br> if (idx > 10) idx = 1; </p> <pre><code> document.all.txtarea.innerText = string[idx]; return false; } function dosomething1() { idx --; if (idx < 1) idx = 10; document.all.txtarea.innerText = string[idx]; return false; } </code></pre> <p>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Insert title here
<br> var string = '<s:property value="sometext"/>';<br> var idx = 1;<br> function dosomething()<br> {<br> idx ++;<br> if (idx > 10) idx = 1;</p> <pre><code> document.all.txtarea.innerText = string[idx]; return false; } function dosomething1() { idx --; if (idx < 1) idx = 10; document.all.txtarea.innerText = string[idx]; return false; } </code></pre> <p>
[/code]
struts
[code="java"]
package com.jwl.exam;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class testjs extends ActionSupport{
private String[] sometext={"dfslhk","fsdfsdf"};
public String[] getSometext() {
System.out.println("getSometext()");
return sometext;
}
public void setSometext(String[] sometext) {
this.sometext = sometext;
}
}
[/code]
只是粗略的试了一下 字符串可以 数组 不知道是哪里写错了 老是没有数据
首先 var string = '';
这句话中的string得到的返回值只是Java代码中的someText数组的toString()值
而数组的toString()方法返回值只是类似于java.lang.String;@360be0的字符串
所以上面那句话的值就变为了 var string = 'java.lang.String;@360be0' 这样的形式
其次 javascript中声明数组的语法是
var string = ["valueA","valueB","valueC"];
你的那种方式得到的永远只是字符串;
所以:
你可以将在getSomeText()方法里面
把数组格式化`将数组 String[] sometext={"valueA","valueB","valueC"};
转换为 valueA,valueB,valueC 的格式进行返回
不过要注意如果上面转换的valueA,valueB,valueC不是数字类型的
那要在每个值两边加上引号成为 [color=red]'[/color]valueA[color=red]'[/color],[color=red]'[/color]valueB[color=red]'[/color],[color=red]'[/color]valueC[color=red]'[/color]
然后在Javascript之中
以 var string = [] 的形式获取值;
这样你所得到的string值就是一个数组了.
希望上面的内容可以帮助你解决你的问题~` :arrow:
'' 这样不就是强制为一个字符串了吗?能得到数组就怪了。可以试试
eval(),前提是你返回的是正确的javascript数组
struts 好久不用了,两种办法
1.
在页面用jsp构造一个符合要求的字符串
<%
String xxx= ...
%>
2.
在后台写个方法 getJsonArrayString 直接返回Json格式字符串,可以用 JSON.org的实现。
' 相当于 getSometext().toString()