# JSF: Welchen Button in Tabelle gedrückt? Listener?



## A.T. (17. Mrz 2008)

Hallo zusammen,

bin dabei mich in JSF einzuarbeiten und habe auch schon das eine oder andere hinbekommen. Hänge jetzt allerdings an einer Stelle, an der ich leider nicht so recht weiter weiß. Für einen Tipp wäre ich sehr Dankbar!

Habe eine Tabelle mit Informatione und möchte aus der Tabelle heraus auf eine Detailseite wechseln in der man mehr Informationen zu denen in der Tabelle angezeigten sehen und diese auch editieren kann. Aber wie bekomme ich heraus welchen Button ich gedrückt habe. Ein Listener der mir die Zeile verrät wäre nicht schlecht! Aber wie mache ich das hier, für eine Deskotopanwendung wäre das ja kein Problem aber bei einer Webanwendung?

Der Wechsel auf die Detailseite funktioniert, nur weiß ich da leider nicht welchen Button ich gedrücht habe, bzw. weiß ich das auch nicht in der Tabelle. Ich weiß nur das irgendeiner gedrückt wurde.

tablePage.jsp

```
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>

<h:dataTable id="dt1" value="#{kundenHandler.kundenListe}" var="item"
	bgcolor="#F1F1F1" border="10" cellpadding="5" cellspacing="3" first="0"
	rows="#{kundenHandler.anzahl}" width="100%" dir="ltr" frame="hsides"
	rules="all" summary="Test">
	<h:column>
		<f:facet name="header">
			<h:outputText value="id" />
		</f:facet>
		<h:outputText value="#{item.id}"></h:outputText>
	</h:column>

	<h:column>
		<f:facet name="header">
			<h:outputText value="name" />
		</f:facet>
		<h:outputText value="#{item.name}"></h:outputText>
	</h:column>

	<h:column>
		<f:facet name="header">
			<h:outputText value="Auswahl" />
		</f:facet>
		<h:commandButton action="#{kundenHandler.detailAnsicht}"
			value="#{msg.bearbeiten}"></h:commandButton>
	</h:column>
</h:dataTable>
```

KundenHandler.java


```
package de.jGeldAktuellVerwaltung.handler;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import de.jGeldAktuellVerwaltung.model.Kunde;

public class KundenHandler {
    private static ArrayList list = new ArrayList();
	
    public KundenHandler(){
        list wird aus der Datenbank gefüllt. Listen Elemente basieren auf meiner Kundenklasse.
        Jeder Kunde hat eine eindeutige ID.
    }
	
    public ArrayList getkundenListe(){
        return list;
    }

    public int getanzahl(){
        return list.size();
    }
	
    public String detailAnsicht(){
        return "success1";
    }
}
```

faces-config.xml

```
<?xml version="1.0" encoding="UTF-8"?>

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

<faces-config>
	<application>
		<locale-config>
			<default-locale>de</default-locale>
			<supported-locale>de</supported-locale>
		</locale-config>
	</application>

	<managed-bean>
		<managed-bean-name>loginHandler</managed-bean-name>
		<managed-bean-class>
			de.jGeldAktuellVerwaltung.handler.LoginHandler
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	<managed-bean>
		<managed-bean-name>beraterHandler</managed-bean-name>
		<managed-bean-class>
			de.jGeldAktuellVerwaltung.handler.BeraterHandler
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	<managed-bean>
		<managed-bean-name>kundenHandler</managed-bean-name>
		<managed-bean-class>
			de.jGeldAktuellVerwaltung.handler.KundenHandler
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>

	<navigation-rule>
		<description>Der Login</description>
		<from-view-id>/pages/login.jsp</from-view-id>
		<navigation-case>
			<from-outcome>success</from-outcome>
			<to-view-id>/pages/startPage.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>

	<navigation-rule>
		<description>Login->StartPage</description>
		<from-view-id>/pages/startPage.jsp</from-view-id>
		<navigation-case>
			<from-outcome>success</from-outcome>
			<to-view-id>/pages/detailPage.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
	
	<navigation-rule>
		<description>tablePage->detailPage</description>
		<from-view-id>/pages/startPage.jsp</from-view-id>
		<navigation-case>
			<from-outcome>success1</from-outcome>
			<to-view-id>/pages/detailPage.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
</faces-config>
```

Gruss
A.T.


----------



## Grey_M (20. Mrz 2008)

Du musst deienr Tabelle ein Binding hinzufügen.

In der JSP

```
<t:dataTable binding=#"{bean.table}">
```


In deiner Klasse:

```
public class Bean{
//Bindest du ja an deine Tabelle
private UIData table;

public String meineAction(){
//welches file wurde geklickt
ImageFile fileObj=(ImageFile) table.getRowData();
}
```


----------



## A.T. (26. Mrz 2008)

Danke für die Information! Funktioniert inzwischen seid einigen Tagen.


----------

