gpt4 book ai didi

javascript - 在 JavaScript 中从支持 bean 迭代列表

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:08 26 4
gpt4 key购买 nike

我在支持 bean 中有一个对象列表我想用 JavaScript 迭代它,所以我尝试了以下方法:

<script>
//<![CDATA[
var length = #{fn:length(myBean.myList)};

for (i = 0; i <= length; i++) {
var value = '#{myBean.myList[i].id}';
var label = '#{myBean.myList[i].firstName}';
alert(value);
alert(label);
}
//]]>
</script>

我在控制台中没有收到任何错误,但它显示空警报。这是怎么引起的,我该如何解决?

最佳答案

需要先将其转换为JS对象数组。前提是id是数字,方法如下:

var users = [
<ui:repeat value="#{bean.users}" var="user" varStatus="loop">
{ id: #{user.id}, firstName: "#{user.firstName}" }#{loop.last ? '' : ','}
</ui:repeat>
];

for (var i = 0; i < users.length; i++) {
var user = users[i];
alert(user.id);
alert(user.firstName);
}

这只会在用户名包含换行符时失败(双引号已被 JSF 转义)。考虑根据 Escape JavaScript in Expression Language 显式转义 JS

更好的方法是让 JSF(或者最好是一些 Web 服务,例如 JAX-RS,根据 ajax 请求)在 JSON 中返回它已经使用像 Google Gson 这样的 JSON 解析器/格式化程序来格式化,这样你就可以:

var users = #{bean.usersAsJson};

for (var i = 0; i < users.length; i++) {
var user = users[i];
alert(user.id);
alert(user.firstName);
}

with(假设您使用的是 Gson):

public String getUsersAsJson() {
return new Gson().toJson(users);
}

另请注意,您应该使用 i < length不是 i <= length .另请注意 usersmyList 更具自记录性.

关于javascript - 在 JavaScript 中从支持 bean 迭代列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8644116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com