2013-03-11 140 views
0

我使用的前端primefaces并使用一个ArrayList在我的支持bean插入元素将空行

我想有由新线分离数组列表,使一些填充一个selectOneList逻辑分隔

如何添加一个元素到ArrayList将被渲染为空行

+0

向我们展示一些代码,什么样的'ArrayList'的?你尝试过'yourArrayList.add(“”)或'yourArrayList.add(new SelectItem(“”,“”))'? – 2013-03-12 00:11:10

回答

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是具有两个字段idname一个简单的POJO。为了简洁起见,我没有展示这个类: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> 
+0

您可能希望在''上设置'escapeItem =“false”',以便浏览器正确解释它 – kolossus 2013-03-12 18:50:59

+0

非常感谢Tapas!这工作。谢谢你的一个很好的例子!我曾尝试myarrayList.add(“”),但没有奏效。 – 2013-03-13 03:20:26

+0

Kolossus,我不必为了达到预期的效果而将该属性设置为false。至少Internet Explorer 9没有它,或者该属性默认为false!虽然谢谢! – 2013-03-13 03:22:38