# get-methode der Managed-Bean wird immer 3 mal ausgeführt



## Ranjo (24. Sep 2014)

Hallo Zusammen,

ich habe eine kleine HTML Seite mit einen Datatable, das sich die Daten von einer Manage-Bean holt.
Dies klaptt sowiet, nur dass die get-Methode der Managed-Bean drei mal ausgeführt wird und somit die selben Daten 3 mal ins Datatable geladen werden.

Evtl. könnte es mit den Server Settings zu tun haben? Hier mal die Ausgabe der Konsole wen ich den Server Starte.


```
Sep 24, 2014 2:02:09 PM org.apache.catalina.core.AprLifecycleListener init
INFORMATION: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;.
Sep 24, 2014 2:02:09 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNUNG: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:TestProject' did not find a matching property.
Sep 24, 2014 2:02:09 PM org.apache.coyote.http11.Http11Protocol init
INFORMATION: Initializing Coyote HTTP/1.1 on http-8080
Sep 24, 2014 2:02:09 PM org.apache.catalina.startup.Catalina load
INFORMATION: Initialization processed in 904 ms
Sep 24, 2014 2:02:09 PM org.apache.catalina.core.StandardService start
INFORMATION: Starting service Catalina
Sep 24, 2014 2:02:09 PM org.apache.catalina.core.StandardEngine start
INFORMATION: Starting Servlet Engine: Apache Tomcat/6.0.37
Sep 24, 2014 2:02:10 PM com.sun.faces.config.ConfigureListener contextInitialized
INFORMATION: Mojarra 2.2.0 ( 20130502-2118 https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930) für Kontext '/TestProject' wird initialisiert.
Sep 24, 2014 2:02:12 PM org.apache.coyote.http11.Http11Protocol start
INFORMATION: Starting Coyote HTTP/1.1 on http-8080
Sep 24, 2014 2:02:12 PM org.apache.jk.common.ChannelSocket init
INFORMATION: JK: ajp13 listening on /0.0.0.0:8009
Sep 24, 2014 2:02:12 PM org.apache.jk.server.JkMain start
INFORMATION: Jk running ID=0 time=0/47  config=null
Sep 24, 2014 2:02:12 PM org.apache.catalina.startup.Catalina start
INFORMATION: Server startup in 2766 ms
test
test
test
```

Für Hilfe wäre ich sehr dankbar!


----------



## Supra (24. Sep 2014)

Ich glaube bischen von deinem Code wäre hilfreich. :/


----------



## Ranjo (25. Sep 2014)

Mag sein 

Hier mal die zwei relevanten Klassen.


```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html 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">


<ui:composition template="/index.xhtml">
	<ui:define name="content">
						<h:dataTable id="eventTable" styleClass="tableStyle" columnClasses="column1" value="#{eventBean.events}" var="event">
							<h:column>
								
								<h:panelGrid columns="2" styleClass="tabelPanelGrid"
								    width="40" columnClasses="column1, column2"
								    footerClass="table-footer" headerClass="page-header">
								  <f:facet name="header" >
								    <h:outputText value="#{event.title}"/>
								  </f:facet>
								  <h:outputText value="#{event.location}"/>
								  <h:outputText value="#{event.date}"/>
								  <h:outputText value="#{event.descr}"/>
								  <f:facet name="footer">
									<h:outputLink value="#{event.link}" rendered="#{not item.editBookmark}"> 
										<h:outputText value = "koelner.de" ></h:outputText> 
									</h:outputLink>
								  </f:facet>
								</h:panelGrid>	
							</h:column >							
						</h:dataTable>		
	</ui:define>
</ui:composition>
</html>
```


```
package com.Omnia.PartyDates;


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

import javax.faces.bean.ManagedBean;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

@ManagedBean
public class EventBean {

	List<Event> events = new ArrayList<Event>();
	
	public List<Event> getEvents() {
		extractEvents();
		System.out.println("test");
		return events;
	}

	public void setEvents(List<Event> events) {
		this.events = events;
	}
	
	public void extractEvents()
	{
		String link = "http://www.koelner.de/party/termine/";
	  	Document doc;
				try {
					doc = Jsoup.connect(link).get();
					Elements dateTags = doc.getElementsByClass("termin");
				
					for(int i=1;i<dateTags.size();i++)
					{
						Date date = new Date(dateTags.get(i).getElementsByClass("weekday").text(),
								dateTags.get(i).getElementsByClass("day").text(), 
								dateTags.get(i).getElementsByClass("month").text());
						
						Elements element = dateTags.get(i).getElementsByClass("summary");
						Element alink = element.select("a").first();
						String href = alink.attr("href");
						
						events.add(new Event(dateTags.get(i).getElementsByClass("summary").text(),
											(date.toString()),
											dateTags.get(i).getElementsByClass("location").text(),
											"Köln",
											dateTags.get(i).getElementsByClass("time-location").text(),
											dateTags.get(i).getElementsByClass("cat genre").text(),
											dateTags.get(i).getElementsByClass("description").text(),
											href));						
					}				
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}		    	
	}	
}
```


----------



## stg (25. Sep 2014)

In getter-Methoden gehört keine Business-Logik!

Initialisiere deine Liste im Konstruktor, oder als Reaktion auf einen ActionEvent, oder in einer PostConstruct-Methode, oder .... aber jedenfalls niemals! in der get-Methode!

Das Verhalten, dass die getter-Methode mehrmals aufgerufen wird, ist normal.


----------



## Ranjo (25. Sep 2014)

@stg: Danke für deine Antwort. Es funktioniert nun. Manchmal ist die Antwort doch ganz simpel


----------

