# setValue(Object) of HtmlSelectOneMenu



## stoevinho (20. Apr 2012)

Guten Aaaabend!

Zur später Stund noch etwas zum kniffeln für daheim 

Ich habe ein HtmlSelectOneMenu in einem Formular. Auslesen, verarbeiten, anzeigen geht.

SO! Jetzt möchte ich den Spieß umdrehen und das geht nicht. Ich habe eine Integer Zahl gespeichert in einer mySQL myISAMDB und möchte, dass er jetzt beim Aufruf auf einer anderen Seite ebenfalls ein HtmlSelectOneMenu vorauswählt - entsprechend dem Datensatz aus der DB.


```
(aus der jsp, wo ich die Zahl das erste Mal einlese)
<h:selectOneMenu id="chooseIF"
 value="chooseIF" required="true" binding="#{manipulateData.chooseIF_Wert}">
<f:selectItem itemLabel="-auswählen-"/>
<f:selectItem itemValue="1" itemLabel="5-1"/>
<f:selectItem itemValue="2" itemLabel="5-2"/>
<f:selectItem itemValue="3" itemLabel="5-3"/>
<f:selectItem itemValue="4" itemLabel="5-4"/>
<f:selectItem itemValue="5" itemLabel="5-5"/>
</h:selectOneMenu>
<h:message id="chooseIFMessage" for="chooseIF" style="color:red;" />
```


```
private HtmlSelectOneMenu chooseIF_Wert;
```

.. zum weiterverarbeiten in der DB musste ich ein bisschen fummeln. Achtung-jetzt wirds nen bissl wild :lol:

```
Object chooseIF_Wert_obj = (Object) this.chooseIF_Wert.getValue();
String chooseIF_Wert_str = (String) chooseIF_Wert_obj;
Integer chooseIF_Wert_id = Integer.parseInt(chooseIF_Wert_str);
```

Also, wie gesagt: so weit so gut. Das funzt!

Entgegengesetzt funktioniert das nicht. Angenommen ich habe die Integer Zahl, und möchte nun auf einer anderen Seite das HtmlSelectOneMenu entsprechend vorausgewählt haben, was muss ich da machen? 

Mein geplanter Weg geht nicht ...
Aus einem resultset (SQL-Abfrage) erhalte ich den Wert. Danach (theoretisch cast-rückwärts?)..?

```
String chooseIF_Wert_str = rs.getString(1);
Object chooseIF_Wert_obj = (Object)chooseIF_Wert_str;
chooseIF_Wert.setValue(chooseIF_Wert_obj);
```

Grummel...

Um den Cast ist eine Try Anweisung. Die Rückmeldung der Methode kommt nicht, weil die Exception  im try-catch Verfahren greift. Die sagt mir nur "-null" ...

Irgendwas muss ich hier in der jsp jetzt anpassen ... mal davon abgesehen dass ich nicht genau weiß ob ich den richtigen Parameter mit setValue überhaupt erwische?!


```
<h:selectOneMenu id="chooseIF"
 value="#{manipulateData.chooseIF_Wert}" required="true" binding="#{manipulateData.chooseIF_Wert}">
<f:selectItem itemLabel="-auswählen-"/>
<f:selectItem itemValue="1" itemLabel="5-1"/>
<f:selectItem itemValue="2" itemLabel="5-2"/>
<f:selectItem itemValue="3" itemLabel="5-3"/>
<f:selectItem itemValue="4" itemLabel="5-4"/>
<f:selectItem itemValue="5" itemLabel="5-5"/>
</h:selectOneMenu>
<h:message id="chooseIFMessage" for="chooseIF" style="color:red;" />
```

Bin wirklich für jeden Tipp zu haben 

Vielen Dank vorab für eure Mühe!
Grüße


----------



## stoevinho (28. Apr 2012)

huhu, Thema ist noch aktuell

*HIIIILFE*


----------



## stoevinho (6. Mai 2012)

weiß denn wirklich keiner wie ich ein setValue(Object obj) bei einer selectOneMenu-List vornehmen kann????

Der Object-cast funktioniert denke ich. Davon absehen, wenn ich das so mache:

```
Object test = "3";
chooseIF.setValue(test);
```

funktioniert das auch nicht. Bekomme da jedes Mal eine Exception der catch Anweisung "--is null". Die kommt natürlich nicht wenn ich das mit dem setValue auslasse...

GRML... biiiitte biiiiiittee biiiiiitteee erbarmen; so helft mir doch ;(


----------



## stoevinho (6. Mai 2012)

Problem gelöst. Pre-Selection möglich über das value-Attributes von HtmlOneSelectMenu:


```
<h:selectOneMenu id="chooseIF"
 value="#{manipulateData.selectedIF_Wert}" required="true" binding="#{manipulateData.chooseIF_Wert}">
<f:selectItem itemLabel="-auswählen-"/>
<f:selectItem itemValue="1" itemLabel="5-1"/>
<f:selectItem itemValue="2" itemLabel="5-2"/>
<f:selectItem itemValue="3" itemLabel="5-3"/>
<f:selectItem itemValue="4" itemLabel="5-4"/>
<f:selectItem itemValue="5" itemLabel="5-5"/>
</h:selectOneMenu>
<h:message id="chooseIFMessage" for="chooseIF" style="color:red;" />
```


```
private Int selectedIF_Wert;

public Integer getselectedIF_Wert() {return selectedIF_Wert;}
public void setselectedIF_Wert (Integer selectedIF_Wert) {this.selectedIF_Wert = selectedIF_Wert;}
```

Sry, das war zu einfach. Hat überhaupt nichts mit dem Cast von Typen zu tun.

```
<h:selectOneMenu id="..."
 value="#{bean.PreSelectedValue}" ... ">
```
 "PreSelectedValue" war der Knackpunkt (oben manipulateData.selectedIF_Wert) -> String und Int können dort erwartet werden.

Grüße.


----------

