如何从客户端JavaScript代码访问Java列表元素?
我有以下简单的脚本,我正在使用它动态地创建如何从客户端JavaScript代码访问Java列表元素?,java,javascript,jsp,el,Java,Javascript,Jsp,El,我有以下简单的脚本,我正在使用它动态地创建 <script type="text/javascript"> function generate(){ var arr = new Array(); <c:forEach items="${articles}" var="a" varStatus="status"> $('#listitems').append( "<li&g
<script type="text/javascript">
function generate(){
var arr = new Array();
<c:forEach items="${articles}" var="a" varStatus="status">
$('#listitems').append(
"<li>"+${a.title}+"</li>"
);
arr[${status.index}] ="${a.slideShow.images}";
</c:forEach>
}
</script>
函数生成(){
var arr=新数组();
$('#listitems')。追加(
“”+${a.title}+“ ”
);
arr[${status.index}]=“${a.slideShow.images}”;
}
我的问题源于图像属性。每篇文章都有一个幻灯片,每个幻灯片都有一个图像列表。我想通过jave list.get(index)从图像列表中取出第一张图像;我想做一些类似“${a.slideShow.images.get(0)}”的事情。get()是来自list对象的java方法
有什么想法吗?正如那些对你的问题发表评论的人所说,这是一个常见的误解。当JavaScript(在浏览器中)执行时,Java、JSP和JSTL不再可用。JSTL/JSP在服务器上执行,以创建源代码/HTML,然后将其发送到客户端
查看页面上的源代码-这可能会有所帮助。您不应该看到上面包含的JSP/JSTL。在EL中,您可以使用大括号表示法按索引访问
列表元素。因此,应采取以下措施:
arr[${status.index}] = "${a.slideShow.images[0]}";
这将在幕后完全按照您的建议执行:a.getSlideShow().getImages().get(0)
也就是说,您通常按照如下方式声明JS数组:
var arr = [];
在JS中,不鼓励使用new
关键字。Javascript与Java没有任何关系,除了名称的前四个字母。忘记Java,使用plain(真正的Javascript)和DOM(文档对象模型)获取该UL中的项目。JavaScript也是典型的客户端代码。伙计们,在评论之前,阅读问题和代码,而不仅仅是标题。标题很重要。它们不是问题的概要吗?如果这个问题陈述了一些不同于散文的东西,这难道不意味着误解吗?嗨,伙计们,我很抱歉措辞含糊不清。巴卢斯克,你说得对。谢谢你的帮助,你说得对。从问题的措辞和所附评论来看,我不确定他是否理解这一点。你认为我的答案令人困惑吗?不鼓励使用新关键字创建数组?还是总是泄气?@Upper Stage:@Binaryrespawn:你说的“导致我的页面无法加载”是什么意思?这太模棱两可了。如果您得到一个空白页,请检查服务器日志中是否有任何异常/错误。如果你得到一个普通的页面,但是图像没有被加载,右键点击页面并查看生成的HTML/JS源代码,并验证它是否在语法上有效。嗨,这个语句对我不起作用。这会导致我的页面无法加载,可能是因为有些文章没有幻灯片,因此没有图像。所以我这样做了,正如前面所说的,只需在浏览器中打开页面并检查生成的JS代码是否在语法上有效。也许它代表一个字符串值,而您忘记了JS变量值周围的单引号。