# JSF - Wert an ein managed bean übergeben



## HerrRossi (22. Feb 2006)

Ich baue mit JSF einen datatable auf. Jetzt möchte ich beim Klick den Wert des geklickten Elements an eine managed bean übergeben.
Aber wie geht das?

Das ist mein bisheriger datatable, mit dem ich zwar über commandLink in die managed bean komme, aber dort keinen Wert habe:

<ice:dataTable id="displayList"
value="#{navigation.children}"
var="children"
styleClass="dataScrollerTable"
columnClasses="firstCol,lastCol"
>

<ice:column>
<f:facet name="header">
<ice:commandSortHeader columnName="Name" arrow="true">
Name
</ice:commandSortHeader>
</f:facet>
<ice:commandLink action="#{content.objKey}" value="#{children.alias}">
</ice:commandLink>
</ice:column>

</ice:dataTable>

Danke für jede Hilfe!!


----------



## Bleiglanz (22. Feb 2006)

was ist ice für ein komischer präfix

und wie sieht die faces-config.xml aus, du musst deine managed beans ja irgendwo anmelden

UND

irgendwo musst du sie schon mit Daten "füllen"


----------



## HerrRossi (22. Feb 2006)

Arbeite mit dem JSF Ajax Framework Icefaces (www.icesoft.com), hab ich vergessen zu erwähnen!

Die managed bean war natürlich auch in der faces-config registriert.
Und navigation.children holt sich einen Vector mit den Datensätzen für den datatable

Den Wert bekommt man scheinbar nur über den Gesamtcontext des requests.
Falls es jemanden interessiert, folgender Code hat mich ans Ziel gebracht:


Datatable in der .jspx Datei:

```
<ice:dataTable id="displayList"
                               value="#{navigation.children}"
                               var="objects"
                               styleClass="dataScrollerTable"
                               columnClasses="firstCol,lastCol"
                        >

                    <ice:column>
                        <f:facet name="header">
                            <ice:commandSortHeader columnName="Name" arrow="true">
                                Name
                            </ice:commandSortHeader>
                        </f:facet>
                        	<ice:commandLink action="#{navigation.displayDetail}" value="#{objects.alias}">
                        </ice:commandLink>
                    </ice:column>

                </ice:dataTable>
```

Methode der managed bean navigation:

```
public void displayDetail() {
  FacesContext facesContext = FacesContext.getCurrentInstance();
		
  Map clicked = facesContext.getExternalContext().getRequestMap();
  BusinessObject object = (BusinessObject) clicked.get("objects");
}
```


Wobei "objects" der definierte Variablenname des icefaces datatables ist.
Durch den Click auf eine bestimmte Reihe wird automatisch nur dieses Objekt in den facesContext geschickt.

---
lg
HerrRossi


----------

