В JSF, что самый короткий путь состоит в том, чтобы произвести Список <SomeObj> как список разделенных запятой значений свойств “имени” SomeObj

У меня есть вопрос о выводе список объектов как список разделенных запятой значений в 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/>, тег может также использоваться?

14
задан BalusC 24 June 2017 в 14:39
поделиться

2 ответа

используйте (из facelets). Это похоже на c:forEach

Или предварительно вычислите строку, разделенную запятыми, в управляемом бине и получите ее через геттер.

7
ответ дан 1 December 2019 в 07:18
поделиться

Given a List persons 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 ? ', ' : ''}
    
    

См. также:

25
ответ дан 1 December 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: