У меня есть вопрос о выводе список объектов как список разделенных запятой значений в JSF.
Скажем:
public class SomeObj {
private String name;
... constructors, getters and setters ...
}
и Список <SomeObj>:
List<SomeObj> lst = new ArrayList<SomeObj>();
lst.add(new SomeObj("NameA"));
lst.add(new SomeObj("NameB"));
lst.add(new SomeObj("NameC"));
для вывода его как поля списка, я могу использовать этот код:
<h:selectManyListbox id="id1"
value="#{listHolder.selectedList}">
<s:selectItems value="#{listHolder.lst}"
var="someObj"
label="#{someObj.name}"/>
<s:convertEntity />
</h:selectManyListbox>
Но что самый легкий путь состоит в том, чтобы произвести список, как, разделенная запятая? Как это:
NameA, NameB, NameC
Я должен использовать JSTL <c:forEach/> или могу быть <s:selectItems/>, тег может также использоваться?
используйте
(из facelets). Это похоже на c:forEach
Или предварительно вычислите строку, разделенную запятыми, в управляемом бине и получите ее через геттер.
Given a List
where Person
has a name
property,
If you're already on Java EE 7 with EL 3.0, then use EL stream API.
#{bean.persons.stream().map(p -> p.name).reduce((p1, p2) -> p1 += ', ' += p2).get()}
Если вы еще не на EL 3.0, но имеете под рукой JSF 2.x, то используйте Facelets
.
#{person.name}#{not loop.last ? ', ' : ''}
Или, если вы все еще на JSP юрского периода, используйте JSTL
.
${person.name}${not loop.last ? ', ' : ''}