JSF Buttons

Status
Nicht offen für weitere Antworten.

mayer

Aktives Mitglied
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 :D !!


Nun habe ich das ganze so versucht:

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


Code:
<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
 

mayer

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

Hier tierBesamungList:

Code:
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:

Code:
<?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>
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben