# Problem mit JavaServer Faces



## KSG9|sebastian (2. Jan 2005)

Hi Leute,ich hab n Prob mit JavaServer Faces. 
Hier sind die Code-Schnipsel:

NewsView.jsp:


```
<%-- jsf:codeBehind language="java" location="/JavaSource/pagecode/NewsView.java" --%><%-- /jsf:codeBehind --%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%@ page 
language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
session="false"
%>
<portlet:defineObjects />
<f:view>
	<c:forEach items="${pc_NewsView.newsItems}" var="itm" begin="0" end="3" step="1">
		<c:out value="${itm.topic}"></c:out>
		<c:out value="${itm.name}"></c:out>
		<c:out value="${itm.text}"></c:out>
	</c:forEach>
</f:view>
```

NewsView.java


```
/*
 * Created on 01.01.2005
 *
 * To change the template for this generated file go to
 * Window&Preferences&Java&Code Generation&Code and Comments
 */
package pagecode;

import java.util.ArrayList;
import java.util.Date;
import java.util.Vector;

/**
 * @author Sebastian
 *
 * To change the template for this generated type comment go to
 * Window&Preferences&Java&Code Generation&Code and Comments
 */
public class NewsView extends PageCodeBase {
	private Vector newsItems;
	private int anzahl;
	
	public NewsView(){
		anzahl = 0;
		newsItems = new Vector();
		addNewsItem(new NewsItem(1,"Sebastian", 1, "Erste News", 1, "Allgemein", "Hallo, erste News!", new Date(1,1,2005)));
		addNewsItem(new NewsItem(1,"Sebastian", 1, "Erste News", 1, "Allgemein", "Hallo, erste News!", new Date(1,1,2005)));
		addNewsItem(new NewsItem(1,"Sebastian", 1, "Erste News", 1, "Allgemein", "Hallo, erste News!", new Date(1,1,2005)));
		addNewsItem(new NewsItem(1,"Sebastian", 1, "Erste News", 1, "Allgemein", "Hallo, erste News!", new Date(1,1,2005)));
		anzahl=3;	
	}
	public void addNewsItem(NewsItem e){
		newsItems.add(e);
	}
	public ArrayList getNewsItems(){
		ArrayList ar = new ArrayList();
		for(int i=0;i<newsItems.size();i++){
			ar.add(newsItems.get(i));
		}
		return ar;
	}
	public int getAnzahl(){
		return anzahl;
	}
}
```

NewsItem.java


```
/*;
 * Created on 01.01.2005
 *
 * To change the template for this generated file go to
 * Window&Preferences&Java&Code Generation&Code and Comments
 */
package pagecode;

import java.util.Date;

/**
 * @author Administrator
 *
 * To change the template for this generated type comment go to
 * Window&Preferences&Java&Code Generation&Code and Comments
 */
public class NewsItem {
	private int dbId;
	private String name; 
	private int name_id;
	private String topic;
	private int kat_id;
	private String kat;
	private String text;
	private Date date;
	public NewsItem(){}
	public NewsItem(int db, String name, int name_id, String topic, int kat_id, String kat,
					 String text, Date date){
		setDbId(db);
		setName_id(name_id);
		setName(name);		
		setTopic(topic);
		setKat_id(kat_id);
		setKat(kat);
		setText(text);	 	
		setDate(date);
	}
	
	/**
	 * @return
	 */
	public int getDbId() {
		return dbId;
	}

	/**
	 * @return
	 */
	public String getKat() {
		return kat;
	}

	/**
	 * @return
	 */
	public int getKat_id() {
		return kat_id;
	}

	/**
	 * @return
	 */
	public String getName() {
		return name;
	}

	/**
	 * @return
	 */
	public int getName_id() {
		return name_id;
	}

	/**
	 * @return
	 */
	public String getText() {
		return text;
	}

	/**
	 * @return
	 */
	public String getTopic() {
		return topic;
	}

	public Date getDate(){
		return date;
	}
	/**
	 * @param i
	 */
	public void setDbId(int i) {
		dbId = i;
	}

	/**
	 * @param string
	 */
	public void setKat(String string) {
		kat = string;
	}

	/**
	 * @param i
	 */
	public void setKat_id(int i) {
		kat_id = i;
	}

	/**
	 * @param string
	 */
	public void setName(String string) {
		name = string;
	}

	/**
	 * @param i
	 */
	public void setName_id(int i) {
		name_id = i;
	}

	/**
	 * @param string
	 */
	public void setText(String string) {
		text = string;
	}

	/**
	 * @param string
	 */
	public void setTopic(String string) {
		topic = string;
	}
	public void setDate(Date d){
		date = d;
	}

}
```

faces-config.xml


```
<?xml version="1.0"?>

<!--
 Copyright 2003 Sun Microsystems, Inc. All rights reserved.
 SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">



<faces-config>
	<lifecycle>
		<phase-listener>com.ibm.faces.webapp.ValueResourcePhaseListener</phase-listener>
	</lifecycle>
	<factory>
		<faces-context-factory>
		com.ibm.faces.context.PortletFacesContextFactoryImpl</faces-context-factory>
	</factory>
	<managed-bean>
		<managed-bean-name>pc_NewsView</managed-bean-name>
		<managed-bean-class>pagecode.NewsView</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
	</managed-bean>
	<managed-bean>
		<managed-bean-name>pc_NewsEdit</managed-bean-name>
		<managed-bean-class>pagecode.NewsEdit</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
	</managed-bean>

</faces-config>
```

Wenn ich das Portlet aufrufe bekomme ich ne leere Seite angezeigt. Wenn ich das c:forEach von 0-x mache und nur nen Text ausge ben will, dann wird der auch x mal ausgegeben.

Ich hab von der Methode getNewsItems() schon alle möglichen Sachen ausprobiert(als Vector zurückgeben, als NewsItem[] zurückgeben), aber nichts funktioniert.

Ich hab auch anstatt end="3"  end="${pc_NewsView.anzahl}" ausprobiert.
Ach ja, zum ausgeben hab ich auch mal <cut value="${itm.text}"></cut> probiert, aber ich bekomme nur ein leeres Portlet angezeigt.

Wäre für Hilfe dankebar..ich hab schon alle möglichen Dokus studiert u.s.w.....


----------



## Bleiglanz (3. Jan 2005)

was soll denn <portlet:defineObjects /> machen, ist das ein Zaubertrick?

so wie es aussieht hast du keine einzige Doku studiert, denn du kannst in einem JSTL Konstrukt

```
<c:forEach items="${pc_NewsView.newsItems}" var="itm" >
   ...
   </c:forEach>
```
keine managed Beans verwenden. Bzw. nur dann, wenn diese Bean schon vorher durch einen geeigneten JSF Mechanismus erzeugt wurde, das ist hier wahrscheinlich nicht der fall

am besten du vermeidest solche Bean Teilungen zwischen JSP/JSTL und der JSF-View ganz, das ist der sichere Weg zum Wahnsinn

nimm eine JSF dataTable


----------



## KSG9|sebastian (3. Jan 2005)

hab den fehler gefunden 

Und doch, ich hab viele dokus studiert 
portlet:defomdeObjects wird vom IBM WSAD automatisch generiert, da das ganze als Portlet läuft!


```
<jsp:useBean ...
```
Dann funktionierts...


----------



## Bleiglanz (3. Jan 2005)

KSG9|plak hat gesagt.:
			
		

> hab den fehler gefunden
> 
> Und doch, ich hab viele dokus studiert
> portlet:defomdeObjects wird vom IBM WSAD automatisch generiert, da das ganze als Portlet läuft!
> ...



ja, aber dann kannst du dir den managed-bean eintrag in der faces-config.xml sparen; wenn du dort initialisierungen vornimmst (dazu ist das ding eigentlich gedacht), werden diese bei 
useBean NICHT ausgeführt!

du musst beim useBean dann den gleichen "Scope" wie in der faces-config.xml verwenden, sonst bringst du das ganze System eventuell ziemlich durcheinander!


----------



## KSG9|sebastian (5. Jan 2005)

jo, ok.. und wie kann ich den managed bean dann verwenden ?


----------



## Gast (7. Jan 2005)

studiere andere Dokus

;-)


----------



## Gast (7. Jan 2005)

a fool with a tool is just fool


----------



## KSG9|sebastian (7. Jan 2005)

verdammt was wird das denn hier ?

ich wollte keinen code haben oder ne komplette config, lediglich nen kleien hinweis was ich machen muss, z.B. "faces-config ändern" oder sowas in der art!

Sachen wie "a fool with a tool is just fool" kannst du dir sparen


----------



## Bleiglanz (7. Jan 2005)

>>jo, ok.. und wie kann ich den managed bean dann verwenden ?

nur in Zusammenhant mit JSF EL (#{mana.bean.prop})

es geht eben nicht so ohne weiters mit der JSTL


----------



## KSG9|sebastian (10. Jan 2005)

jo, ok, wenn ich wieder zeit finde les ich noch n paar dokus..

danke


----------

