struts2+;spring3:将变量从action传递到jsp(javascript代码)

struts2+;spring3:将变量从action传递到jsp(javascript代码),javascript,jsp,struts2,spring-3,Javascript,Jsp,Struts2,Spring 3,首先,非常感谢所有这些试图在本论坛解决我们问题的人;) 我正在用struts2+spring3开发一个web应用程序。我有一个关于如何将变量(数组数组)从action类传递到jsp页面的问题 我知道您只需要在我的操作中声明一个私有变量,并为该变量声明一个get方法,然后就可以从jsp访问这些变量了,我已经这样做了,它可以工作了 public class Workspace extends ActionSupport { private String[][] objects=null; pub

首先,非常感谢所有这些试图在本论坛解决我们问题的人;)

我正在用struts2+spring3开发一个web应用程序。我有一个关于如何将变量(数组数组)从action类传递到jsp页面的问题

我知道您只需要在我的操作中声明一个私有变量,并为该变量声明一个get方法,然后就可以从jsp访问这些变量了,我已经这样做了,它可以工作了

public class Workspace extends ActionSupport {

private String[][] objects=null;

public String[][] getObjects() {
    return objects;
}

public String execute() throws Exception{
问题是,我想在加载整个网页之前从javascript代码访问这个变量

我试过不同的方法,但都不管用

$(function() {
var objectsMap=new Array();

    $(document).ready(function() {
          objectsMap = $objects;
    });
两者都不起作用(警报显示:“值:未定义”):


警报(“值:+$(“#auxObj”).val());

有人知道我该怎么做吗?

对于web开发初学者来说,重要的是要了解像JSP这样的服务器端语言在web服务器上运行,像JS这样的客户端语言在webbrowser上运行。JS与JSP不同步运行。JSP只生成HTML/CSS/JS代码。Webserver将其发送给webbrowser。JS只看到/理解HTML

每当您想将JSP变量分配给JS时,都需要让JSP打印它,就像它是JS代码一样。下面是一个使用JSTL
标记在
对象[][]
上进行迭代的示例(我相信Struts也有自己的迭代器标记,
,但由于我不使用Struts,我不确定如何使用它,以及它是否适用;JSTL应该可以正常工作)

这样JS代码就可以通过
对象

来访问它,谢谢大家, 最后,我在这里键入代码,以防对其他代码有用:

    var $linesMap=new Array();

    $(document).ready(function() {
        var $arr;
        <s:iterator value="objects" var="item" status="stat">
            $arr=new Array();
            <s:iterator value="item" var="item2" status="stat2">
                $arr.push(['${item2[0]}','${item2[1]}']);
            </s:iterator>
            $linesMap.push($arr);
        </s:iterator>
        });
var$linesMap=newarray();
$(文档).ready(函数(){
var$arr;
$arr=新数组();
$arr.push(['${item2[0]}','${item2[1]}');
$linesMap.push($arr);
});
然后我可以在javascript代码中使用$linesMap:)

多谢各位,
Aleix

感谢BalusC提供了关于这两种语言在何处运行的有用信息。+1是关于服务器与客户端的一篇精彩文章@Aleix:在BalusC的示例中,将
${objects}
更改为
${action.objects}
,它应该可以与您的操作一起使用。谢谢Steven,但它最终可以直接引用“objects”,不必引用“action.objects”。谢谢;)
<script>
    var objects = [];

    <c:forEach items="${objects}" var="row" varStatus="x">
        objects[${x.index}] = [];
        <c:forEach items="${row}" var="column" varStatus="y">
            objects[${x.index}][${y.index}] = '${column}';
        </c:forEach>
    </c:forEach>
</script>
<script>
    var objects = [];
    objects[0] = [];
    objects[0][0] = 'row1col1';
    objects[0][1] = 'row1col2';
    objects[1] = [];
    objects[1][0] = 'row2col1';
    objects[1][1] = 'row2col2';
</script>
    var $linesMap=new Array();

    $(document).ready(function() {
        var $arr;
        <s:iterator value="objects" var="item" status="stat">
            $arr=new Array();
            <s:iterator value="item" var="item2" status="stat2">
                $arr.push(['${item2[0]}','${item2[1]}']);
            </s:iterator>
            $linesMap.push($arr);
        </s:iterator>
        });