Announcement

Collapse
No announcement yet.

ListObject innerhalb einer Liste im Frontend darstellen.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ListObject innerhalb einer Liste im Frontend darstellen.

    Hi Leute,
    ich bin relativ unerfahren in Bezug auf JSF.
    Ich benutze im Moment JSF 2.0.

    Zum Schildern meines Problems habe ich eine kleine Beispielanwendungen gemacht.

    CODE BEAN:
    Code:
    package list;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.faces.bean.ManagedBean;
    
    
    @ManagedBean(name="list") 
    public class ListB implements Serializable{
    	
    	//private data
    	private List<ListDo> listDo;
    	private int size;
    	private List<String> testList;
    	
    	//Constructor
    	public ListB(){
    		listDo = new ArrayList<ListDo>();
    		ListDo listDo1 = new ListDo(0);
    		ListDo listDo2 = new ListDo(1);
    		ListDo listDo3 = new ListDo(2);
    		ListDo listDo4 = new ListDo(3);
    		listDo.add(listDo1);
    		listDo.add(listDo2);
    		listDo.add(listDo3);
    		listDo.add(listDo4);
    		
    		 testList = new ArrayList<String>();
    	        testList.add("Mango");
    	        testList.add("Apple");
    	        testList.add("Banana");
    	}
    
    
    	//getter setter
    	public List<ListDo> getListDo() {
    		return listDo;
    	}
    
    	public void setListDo(List<ListDo> listDo) {
    		this.listDo = listDo;
    	}
    
    	public int getSize() {
    		return size;
    	}
    
    	public void setSize(int size) {
    		this.size = size;
    	}
    	
    	public List<String> getTestList() {
    		return testList;
    	}
    
    
    	public void setTestList(List<String> testList) {
    		this.testList = testList;
    	}
    	
    }
    CODE DATENOBJEKT:
    Code:
    package list;
    
    public class ListDo {
    	
    	private int index;
    	
    	public ListDo(int index){
    		this.index = index;
    	}
    
    	public int getIndex() {
    		return index;
    	}
    
    	public void setIndex(int index) {
    		this.index = index;
    	}	
    }
    XHTML CODE:
    HTML Code:
    <html xmlns="http://www.w3c.org/1999/xhtml"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:p="http://primefaces.prime.com.tr/ui"
    	xmlns:c="http://java.sun.com/jsp/jstl/core"
    	xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
    <title>index</title>
    </h:head>
    <h:body>
    <h1>List</h1>
    <c:forEach var="listDo" items="#{list.listDo.index}">
                    ListDo-Size: <h:outputText value="#{listDo}" /> <br />
    </c:forEach>
    
    <h1>ListTest</h1>
    <c:forEach var="test" items="#{list.testList}">
                    ListObjects: <h:outputText value="#{test}" /> <br />
    </c:forEach>	
    	
    </h:body>
    </html>
    Der ELemente mit der Überschrift "ListTest" können problemlos dargestellt werden.
    Die Objekte mit der Überschrift "List" können jedoch nicht dargstellt werden. Benutze ich den falschen Syntax um ListObjekte innerhalb einer Liste anzuzeigen?

    Ich denke das ist eine recht simple Frage aber ich habe es leider nicht zum Laufen gebracht.
    Falls jemand eine Möglichkeit hat, wie ich die Inhalte meiner ListDo Objekte im Frontend anzeigen kann, wäre ich sehr dankbar.

    Danke im Voraus.

  • #2
    Items muss auf Collection zeigen

    Hallo RonaldoC7,

    wie schon richtig vermutet, ist Deine Syntax in dem Template nicht ganz richtig. Das var-Attribut des forEach-Tags dient der Definition eines willkürlichen Variablennamens, über den innerhalb der Iterationen auf die angezeigte Bean zugegriffen werden kann. Das items-Attribut dient dazu, die Collection zu bestimmen, über die iteriert werden soll. Bei testList hast Du es richtig gemacht, deswegen geht es dort. Bei listDo hast Du es falsch gemacht, deswegen geht es dort nicht. Probier mal folgenden Code aus:
    Code:
    <c:forEach var="listDo" items="#{list.listDo}">
                    ListDo-Index: <h:outputText value="#{listDo.index}" /> <br />
    </c:forEach>
    Gruß ngomo
    http://www.winfonet.eu

    Comment


    • #3
      Hi ngomo,
      vielen Dank, so funktioniert es!

      Comment

      Working...
      X