# JSF - selectOneMenu mit Daten aus faces-config füllen



## Berndt (13. Jul 2007)

Ich möchte meine Selectbox mit Daten aus der faces-config füllen. Diese Daten sollen innerhalb der Managed-Bean im <managed-property> stehen.

Gibts irgendwo Beispielscode dafür?


----------



## Zed (13. Jul 2007)

Warum aus der Faces Config? 

Schreib dir doch ein kleines Bean was die Sache für dich erledigt. 

```
<h:selectOneMenu id="selectonem" styleClass="box2">
  <f:selectItems value="#{selectOneMenuXml.arguments}"/>
</h:selectOneMenu>
```


```
<managed-bean>
	<managed-bean-name>selectOneMenuXml</managed-bean-name>
	<managed-bean-class>jsf.backing.SelectOneMenuXml</managed-bean-class>
	<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
```
Der Code ist aus einem meiner Applicationen aber man erkennt das Schema wies funktioniert.
Scope: Request

```
public class SelectOneMenuXml{
	private ResourceBundle rbo	= 	ResourceBundle.getBundle("options");
	public ArrayList getArguments(){
		FileOps fop = new FileOps();
		ArrayList<SelectItem> l = new ArrayList<SelectItem>();
		ArrayList<File> flist = fop.findFileWith(rbo.getString("searchDelim"));
		for(File f:flist){
			l.add(new SelectItem(f.getName()));
		}
		return l;
	}
}
```


----------



## Berndt (13. Jul 2007)

Vielen dank für die Antwort. Ich will halt das man die Selectbox-Werte nicht im Java-Code ändern muss sondern eben in der faces-config.


----------



## WeirdAl (13. Jul 2007)

Du kannst über faces-config.xml Listen und Maps vorab initialisieren. Ich hab mal fix gegooglet, um ein Beispiel zu haben (hab grad keine Zeit das selbst zu stricken):


```
<managed-bean>
    <managed-bean-name>fishEyeBean</managed-bean-name>
    <managed-bean-class>com.sun.faces.run_time_test.model.FishEyeBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
      <property-name>personMessages</property-name>
      <list-entries>
        <value>Ben Galbraith</value>
        <value>Dion Almaer</value>
        <value>Aza Raskin</value>
        <value>Howard Lewis-Ship</value>
      </list-entries>
    </managed-property>
  </managed-bean>
```

Cu
Alex


----------



## Zed (13. Jul 2007)

Ich würde es sogar so machen das ich die Werte aus einer Datei lesen würde. So müsste man es nicht mal tomcat neu starten um die Werte zu verändern.

Code nicht getestet


```
public class SelectOneMenuXml(String path){
	   public ArrayList getArguments(){
	   BufferedReader infile = new BufferedReader(new FileReader(new File(path)));
	   ArrayList<SelectItem> l = new ArrayList<SelectItem>(); 
	   String line;     
	   while((line = infile.readLine()) != null)
	         l.add(new SelectItem(line));
	   }
	   infile.close();
	   return l;
}
```
[/quote]


----------



## Berndt (14. Jul 2007)

Danke für die Antworten. Habs mir nun überlegt, werde die Daten aus der Bean füllen lassen. 

Wie muss ich das angehen, ich muss doch eine Map füllen oder?


----------

