Сначала вам нужно преобразовать его в массив объектов 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).Рассмотрите возможность явного выхода из JS в соответствии с Избегайте JavaScript на языке выражений
Лучший способ - позволить JSF (или, предпочтительно, некоторому веб-сервису, например JAX-RS, по запросу ajax) вернуть его в JSON форматировать уже с использованием JSON-анализатора / форматера, например Google Gson , так что вы можете просто:
var users = #{bean.usersAsJson};
for (var i = 0; i < users.length; i++) {
var user = users[i];
alert(user.id);
alert(user.firstName);
}
с (при условии, что вы используетеGson):
public String getUsersAsJson() {
return new Gson().toJson(users);
}
Обратите внимание, что вы должны использовать i < length
, а не i <= length
.Также обратите внимание, что users
является более самодокументированным, чем myList
.