# JSF Buttons



## mayer (3. Aug 2005)

Ich schreibe gerade eine Webseite in JSF. Auf dieser Seite befindet sich ein Tabelle mit Daten aus einer Oracle-DB.

Nun will ich das neben jeder Zeile der Tabelle eine Button zum Ändern und Löschen erscheint.

Skizze:

|--------|---------|----------|-----------|-------------|
|xda1x|xxda2x|xxda3xx|*ÄNDERN*|*LÖSCHEN*|
|--------|---------|----------|-----------|-------------|
|xda4x|xxda5x|xxda6xx|*ÄNDERN*|*LÖSCHEN*|
|--------|---------|----------|-----------|-------------|

Ja das soll eine Tabelle sein  !!


Nun habe ich das ganze so versucht:

Ausschnitt aus mein JSF-Seite die letzten zwei Spalten der Datentabelle



```
<h:dataTable var="tier" value="#{tierBesamungList.tierBesamungsListe}" headerClass="tableheader"
 ....

<h:column>
    <h:commandButton value="Ändern" actionListener="#{tierBesamungList.updateTier}" action="successUpd">
         <f:param name="tierNummer" value="#{tier.uid}"/>
     </h:commandButton>
 </h:column>
  <h:column>
      <h:commandButton value="Löschen" actionListener="#{tierBesamungList.deleteTier}" action="successDel"/>
           <f:param name="tierNummer" value="#{tier.uid}"/>
     </h:commandButton>
  </h:column>

</h:dataTable>
```

Leider wird die Funktion updateTier bzw. delteTier nicht aufgerufen wenn ich den Button bedätige. Ich vermute das es vielleicht an der id der Buttons liegt, da es sein könnte das alle Ändern-Buttons die gleiche ID und alle Löschen-Buttons die gleiche ID haben.

Kann mir jemand weiterhelfen ??

mfg manuel


----------



## KSG9|sebastian (4. Aug 2005)

zeig mal deine faces-config.xml und deine Klasse TierBesaumgList


----------



## mayer (4. Aug 2005)

Erstmals danke für deine Antwort. Hier sind die Klassen:

Hier *tierBesamungList*:


```
package mybeans;

import data.EbFacade;
import java.util.Date;
import java.util.Vector;
import javax.faces.FactoryFinder;
import javax.faces.application.Application;
import javax.faces.application.ApplicationFactory;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.event.*;
import exceptions.*;

public class TierBesamungListeBean 
{
  private Vector tierBesamungsListe = null;
  private EbFacade eb = null;
  private Long lfbis;
  
  public TierBesamungListeBean() 
  {
    eb = new EbFacade();
    
    FacesContext context = FacesContext.getCurrentInstance();
    ApplicationFactory apf = (ApplicationFactory) FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
    Application appl = apf.getApplication();
    
    
    ValueBinding binding=appl.createValueBinding("#{betrieb.lfbis}");
    lfbis = new Long( ((String) binding.getValue(context)) );
    System.out.println("asfdsfhdsfhdasfhdhcvcvnsdfhdfsdfhdsf: "+lfbis);
    tierBesamungsListe = new Vector(eb.getEbBesamerListFor(lfbis));
    
  }
  
  public void setTierBesamungsListe(Vector tierBesamungsListe)
  {
    this.tierBesamungsListe = tierBesamungsListe;
  }
  
  public Vector getTierBesamungsListe() 
  {
    return tierBesamungsListe;
  }
  
  public void addTierBesamung(ActionEvent event) 
  { 
    String snr=null;
    String besNummer=null;
    String eingBy=null;
    String tiernummer=null;
    String tiername=null;
    Date datum = null;
    String stierNummer = null;
    String stierName = null;
    String chargenNummer = null;
    String baRdvNr = null;
    
    FacesContext context = FacesContext.getCurrentInstance();
    ApplicationFactory apf = (ApplicationFactory) FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
    Application appl = apf.getApplication();
    
    ValueBinding binding = appl.createValueBinding("#{tierBesamung.snr}");
    snr = (String) binding.getValue(context);
    
   
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.besNummer}");
    besNummer = (String) binding.getValue(context);
    System.out.println("val: "+besNummer);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.eingBy}");
    eingBy = (String) binding.getValue(context);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.tierNummer}");
    tiernummer = (String) binding.getValue(context);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.tierName}");
    tiername = (String) binding.getValue(context);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.datum}");
    datum = (Date) binding.getValue(context);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.stierNummer}");
    stierNummer = (String) binding.getValue(context);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.stierName}");
    stierName = (String) binding.getValue(context);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.chargenNummer}");
    chargenNummer = (String) binding.getValue(context);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.baRdvNr}");
    baRdvNr = (String) binding.getValue(context);
    
    System.out.println(snr+" "+besNummer+" "+eingBy+" "+tiernummer+" "+tiername+" "+datum+" "+stierNummer+" "+stierName+" "+new String("I")+" "+lfbis+" "+baRdvNr);
    try 
    {
      eb.addTierEbBesamung(lfbis,tiernummer,stierNummer,besNummer,new java.sql.Date(datum.getTime()),chargenNummer,baRdvNr);
      tierBesamungsListe = new Vector(eb.getEbBesamerListFor(lfbis));
    }
    catch(WrongDateException wde) 
    {
      FacesContext con = FacesContext.getCurrentInstance();
      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN,"!!! "+wde.getMessage()+" !!!","!!! "+wde.getMessage()+" !!!");
      context.addMessage(event.getComponent().getClientId(con),message);
      return;
    }
      
    catch(TierNotValidException tnve) 
    {
      FacesContext con = FacesContext.getCurrentInstance();
      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN,"!!! "+tnve.getMessage()+" !!!","!!! "+tnve.getMessage()+" !!!");
      context.addMessage(event.getComponent().getClientId(con),message);
      return;
    }
    resetInputFields();
  }
  
  public void deleteTier(ActionEvent event) 
  {
    System.out.println("delete");
//  do something

  }
  
  public void updateTier(ActionEvent e) 
  {
    System.out.println("update");
//  do something  
  }
  
  private void resetInputFields() 
  {
    FacesContext context = FacesContext.getCurrentInstance();
    ApplicationFactory apf = (ApplicationFactory) FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
    Application appl = apf.getApplication();
    
    ValueBinding binding = appl.createValueBinding("#{tierBesamung.tierNummer}");
    binding.setValue(context,null);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.datum}");
    binding.setValue(context,null);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.stierNummer}");
    binding.setValue(context,null);
    
    binding=null;
    binding=appl.createValueBinding("#{tierBesamung.chargenNummer}");
    binding.setValue(context,null);
  }
}
```

Hier *faces-config.xml*:


```
<?xml version="1.0" encoding="windows-1252"?>
<!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 xmlns="http://java.sun.com/JSF/Configuration">

  <navigation-rule>
    <from-view-id>/BetriebMenu.jsp</from-view-id>
    <navigation-case>
      <from-outcome>ebBes</from-outcome>
      <to-view-id>/Erf_Eb_Besamung.jsp</to-view-id>
    </navigation-case>
  </navigation-rule>
  
  <managed-bean>
    <managed-bean-name>tierBesamung</managed-bean-name>
    <managed-bean-class>mybeans.TierBesamungBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  
  <managed-bean>
    <managed-bean-name>temp</managed-bean-name>
    <managed-bean-class>mybeans.TempBean</managed-bean-class>
    <managed-bean-scope>application</managed-bean-scope>
  </managed-bean>
  
  <managed-bean>
    <managed-bean-name>tierBesamungList</managed-bean-name>
    <managed-bean-class>mybeans.TierBesamungListeBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  
  
  <managed-bean>
    <managed-bean-name>betrieb</managed-bean-name>
    <managed-bean-class>existingBeans.BetriebBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  
  <application>
    <message-bundle>erf_eb_bes_MessageBundle</message-bundle>
  </application>
  <managed-bean>
    <managed-bean-name>besamungsAnstaltList</managed-bean-name>
    <managed-bean-class>mybeans.BesamungAnstaltListBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
</faces-config>
```


----------



## mayer (8. Aug 2005)

Plötzlich geht's keine Ahnung warum.

mfg manuel


----------

