在JS中访问Struts对象

时间:2011-03-31 10:55:00

标签: javascript struts

我有一个bean,想要遍历这些值并将其存储在一个数组中。

我的表单bean名称是关键字,要访问的元素是keywordList,所以在我的JS中提醒(“$ {keywords.keywordList}”);

我得到[com.test.bean.Keyword@10,com.test.bean.Keyword @ f,com.test.bean.Keyword @ e],但是我想要这些值并将它们分配给var,如何我可以这样做吗?

4 个答案:

答案 0 :(得分:1)

javascript和java是两种不同的语言,你不能假设你在java中传递keywords.keywordList并在javascript中获取相应的对象,你需要在java中迭代关键字列表并手动创建相应的javascript对象。

更新:某些伪代码

out.print("var keywordsInJS = []")
for (String keyword : keywordList) {
    out.print("var keyword = '" + keyword + "';");
    out.print("keywordsInJS.push(keyword);");
}

// now you can use keywordsInJS in js.

答案 1 :(得分:1)

以下是我解决问题的方法

<script>
    var i = 0;
    var collection = new Array(); 
    </script>

由于我使用的是逻辑:迭代器并在表格中显示值,我添加了

<script>
   collection[i++] = "${keyword.name}";
</script>

现在当我提醒收集时,所有单词都在数组中。这正是我需要的。

答案 2 :(得分:1)

这是我在JSP页面上解决这个问题所做的工作

< %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<script type="text/javascript">

var keyWordsArray=new Array();

var rowCounter=0;

<c:forEach items="${keywords.keywordList}" var="keyWords">

    var fieldObj=new Object();

    fieldObj.value='<c:out value="${keyWords}"/>'

    keyWordsArray[rowCounter]=fieldObj;

    rowCounter++;

</c:forEach>

&LT; /脚本&GT;

&LT; /代码&GT;

现在您可以在Javascript中访问keWordArray。

答案 3 :(得分:-1)

根据我的经验,JS和Java不能很好地互动...

我建议您使用HTML作为中间词来进行交互。例如,在html中以不可见文本显示列表内容(使用迭代器和索引属性,每个文本可以有不同的名称),然后就可以在JS中获取它们。

你还应该保持列表的长度,这样当你在JS中进行迭代时,你知道何时停止。

我知道这远不是一个完美的解决方案,远远不是一件好事。但我知道没有更好的办法:(

希望有一个,所以我也可以使用它:)