【问题标题】:Inserting element in an arraylist to render empty line在数组列表中插入元素以呈现空行
【发布时间】:2013-03-11 23:08:44
【问题描述】:

我在前端使用 primefaces,并在我的支持 bean 中使用数组列表填充 selectOneList

我想让数组列表用新行分隔以进行一些逻辑分隔

如何将元素添加到ArrayList,该元素将呈现为空行

【问题讨论】:

  • 给我们看一些代码,什么样的ArrayList?你试过yourArrayList.add("")yourArrayList.add(new SelectItem("", ""))吗?

标签: jsf jsf-2 primefaces


【解决方案1】:

以下代码将帮助您实现您想要的功能,即在<p:selectOneListBox> 中输入一些空行。现在我不确定挤出空字符串是否是该组件的一个功能。所以"" 将不起作用。

这是一个示例托管 bean:

package app.so.dev.web.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import app.so.dev.web.model.Student;

@ManagedBean(name = "so15350373")
@ViewScoped
public class SO15350373 implements Serializable{

    private static final long serialVersionUID = 2190171095461884759L;
    private List<Student> students;
    private int selected;

    @PostConstruct
    public void init() {
        students = new ArrayList<Student>();
        students.add(new Student(1, "Student 1"));
        students.add(new Student(2, "&nbsp;"));
        students.add(new Student(3, "Student 3"));
        students.add(new Student(4, "&nbsp;"));
        students.add(new Student(5, "Student 5"));
        students.add(new Student(6, "Student 6"));
    }

    public List<Student> getStudents() {
        return students;
    }

    public void setStudents(List<Student> students) {
        this.students = students;
    }

    public int getSelected() {
        return selected;
    }

    public void setSelectedStudent(int selected) {
        this.selected = selected;
    }   
}

Student 是一个简单的 POJO,有两个字段 idname。为简洁起见,我没有展示这个类:P。

这是xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui" template="/WEB-INF/templates/globalTemplate.xhtml">

    <ui:define name="title">15350373</ui:define>
    <ui:define name="content">
        <h:form>
            <p:selectOneListbox value="#{so15350373.selected}" id="list">
                <f:selectItems value="#{so15350373.students}" var="student" itemLabel="#{student.name}" itemValue="#{student.id}" />
            </p:selectOneListbox>
        </h:form>
    </ui:define>

</ui:composition>

【讨论】:

  • 您可能希望在&lt;f:selectItems/&gt; 上设置escapeItem="false",以便浏览器正确解释它
  • 非常感谢小吃!那行得通。感谢一个很好的例子!我之前尝试过 myarrayList.add("") 但没有奏效。
  • Kolossus,我不必将该属性设置为 false 以获得所需的效果。至少 Internet Explorer 9 没有它就可以了,或者该属性默认为 false !不过谢谢!
猜你喜欢
  • 2017-01-20
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多