0 Replies Latest reply on Jun 11, 2008 5:11 AM by Sascha Hoffmann

    Datamodel - I get no data from the Datamodel

    Sascha Hoffmann Newbie

      Hi folks

      I have a big Problem with my DataModel and DataTable.
      I show my datas with the DataTable and the DataModel. I can show the datas without any problem but if i try to get the selected rownumber with the method "getRowIndex" I get a "-1" back but I don't know why.

      I hope someone can help me with the problem.

      Here my xhtml-Page (not all):

      <fieldset class="usrFormPos">
      <legend>Anzahl gefundener Sätze: #{strhdl.datamodel.rowCount}</legend>
       <h:dataTable value="#{strhdl.datamodel}" var="str"
       headerClass="usrDataHeader"
       rowClasses="usrDataRow1,usrDataRow2"
       columnClasses="usrDataColScore,usrDataColPlz,usrDataColOrt,usrDataColStr,usrDataColHsBreich,usrDataColOrt">
       <h:column>
       <f:facet name="header">
       <h:outputLabel value="%"/>
       </f:facet>
       <h:outputText value="#{str.score}" />
       </h:column>
       <h:column>
       <f:facet name="header">
       <h:outputLabel value="Plz"/>
       </f:facet>
       <h:outputText value="#{str.plz}" />
       </h:column>
       <h:column>
       <f:facet name="header">
       <h:outputLabel value="Ort"/>
       </f:facet>
       <h:outputText value="#{str.ort}" />
       </h:column>
       <h:column>
       <f:facet name="header">
       <h:outputLabel value="Straße"/>
       </f:facet>
       <h:outputText value="#{str.strasse}" />
       </h:column>
       <h:column>
       <f:facet name="header">
       <h:outputLabel value="Hsnr.-Ber."/>
       </f:facet>
       <h:outputText value="#{str.hsnrbereich}" />
       </h:column>
       <h:column>
       <f:facet name="header">
       <h:outputLabel value="Ortsteil"/>
       </f:facet>
       <h:outputText value="#{str.ortsteil}" />
       </h:column>
       <h:column>
       <s:button value="ok" action="#{strhdl.select}" styleClass="usrFormSubmitOk"/>
       </h:column>
      
       </h:dataTable>
      </fieldset>
      </h:form>
      </body>
      </html>
      



      An here my Handler:
      import java.util.ArrayList;
      import java.util.List;
      
      import javax.ejb.*;
      import javax.faces.context.FacesContext;
      import javax.faces.model.DataModel;
      import javax.faces.model.ListDataModel;
      import javax.faces.event.ValueChangeEvent;
      import org.jboss.seam.log.Log;
      import org.jboss.seam.annotations.*;
      import org.jboss.seam.ScopeType;
      import org.jboss.seam.core.FacesMessages;
      import hwplz_d.ejb.HWplz_DBeanRemote;
      import hwname_pd.ejb.HWname_PDBeanRemote;
      import tcdlgejb.*;
      import tcdlgsbi.*;
      
      
      @Stateful
      @Name("strhdl")
      @Scope(ScopeType.EVENT)
      public class StrasseHandler implements StrasseHandlerLocal {
      
       static private String inStr;
       static private String inPlz;
       static private String inOrt;
      
       @EJB
       private KundeHandlerLocal kundehdl;
      
       @EJB
       private HWplz_DBeanRemote hwplz_d;
      
       @EJB
       private HWname_PDBeanRemote hwname_d;
      
       @EJB
       private ToolRemote toolBean;
      
       @Logger
       private Log log;
      
       private Kunde kunde;
       private DataModel datamodel_in;
       private static DataModel datamodel;
       private int rowIndex = -2;
      
      // ----------------------------------------------------------------------------------
       /**
       * Rückgabe der gefundenen Straßen
       * @return datamodell
       */
       public DataModel getDatamodel() {
      
       if(datamodel == null) {
       datamodel = new ListDataModel();
       datamodel.setWrappedData(getStrassenListe());
       }
       return datamodel;
       }
      // ----------------------------------------------------------------------------------
       /**
       * Straßen in Liste übernehmen
       * @return List der Strassen
       */
       private List getStrassenListe() {
      
       String h_ort = "";
       String h_str = "";
       String h_hsber = "";
      
       List getStrassenListe = new ArrayList();
      
       try {
       // Alle Strassen aus der Bean in die Liste übernehmen
       for (int i=1;i < Integer.parseInt(hwplz_d.getAnzAuswahl());i++) {
      
       //log.info(hwplz_d.getOrtInaktiv(i));
      
       // Ortstext ev. verkettet?
       if (hwplz_d.getOrtInaktiv(i).length() != 0)
       h_ort = hwplz_d.getOrtInaktiv(i) + " -> " + hwplz_d.getOrtKurz(i);
       else
       h_ort = hwplz_d.getOrtKurz(i);
      
       // Straßentext ev. verkettet?
       if (hwplz_d.getStrasseInaktiv(i).length() != 0)
       h_str = hwplz_d.getStrasseInaktiv(i) + " -> " + hwplz_d.getStrasseKurz(i);
       else
       h_str = hwplz_d.getStrasseKurz(i);
      
       // Hausnummernbereich oder Postfachnummer-Bereich ev. verkettet
       if (hwplz_d.getHausnrBereichInaktiv(i).length() != 0)
       h_hsber = hwplz_d.getHausnrBereichInaktiv(i) + " -> " + hwplz_d.getHausnrBereich(i);
       else if (hwplz_d.getHausnrBereich(i).length() != 0)
       h_hsber = hwplz_d.getHausnrBereich(i);
       else if (hwplz_d.getPostfachBereich(i).length() != 0)
       {
       h_hsber = hwplz_d.getPostfachBereich(i).substring(0,6) + " - " +
       hwplz_d.getPostfachBereich(i).substring(6,12);
       }
      
       // Werte in die Liste übernehmen
       getStrassenListe.add(new Strasse(hwplz_d.getPunkte(i), hwplz_d.getPLZ(i), hwplz_d.getPLZTyp(i),
       h_ort, h_str, h_hsber, hwplz_d.getOrtsteil(i)));
       }
       }
       catch (Exception e) {
       log.info("Fehler in getStrassenListe()!");
       e.printStackTrace();
       };
       return getStrassenListe;
       }
      // ----------------------------------------------------------------------------------
       /*
       * Rückgabe der eingegebenen Straße
       */
       public DataModel getStrasseIn() {
      
       if(datamodel_in == null) {
       datamodel_in = new ListDataModel();
       datamodel_in.setWrappedData(getStrasseInListe());
       }
       return datamodel_in;
       }
      // ----------------------------------------------------------------------------------
       /**
       * Eingegebene Straße in Liste übernehmen
       * @return List der Strassen
       */
       private List getStrasseInListe() {
      
       List getStrasseInListe = new ArrayList();
      
       try {
       getStrasseInListe.add(new Strasse(" ",inPlz,"u",inOrt,inStr," "," "));
       }
       catch (Exception e) {
       log.info("Fehler in getStrassenInListe()!");
       e.printStackTrace();
       };
       return getStrasseInListe;
       }
      // ----------------------------------------------------------------------------------
       /**
       * @return rowIndex
       */
       public int getSelectedRowIndex() {
       return rowIndex;
       }
      // ----------------------------------------------------------------------------------
       /**
       * Ausgewählte Werte werden übernommen
       * @return Link zu einer anderen Seite
       */
       public String select() {
       int test;
      
       System.out.println("DWS");
       try {
       System.out.println("DWS1");
       kunde = kundehdl.getSelectedKunde();
      
       test = datamodel.getRowIndex();
       }
       catch (Exception e) {
       log.info("Fehler in select()!");
       e.printStackTrace();
       };
       //System.out.println(rowIndex);
       return "/kunden/kunde-bearbeiten.xhtml";
       }
      // ----------------------------------------------------------------------------------
       public void strtextChanged (ValueChangeEvent vce) {
       if (vce.getOldValue() != vce.getNewValue()) {
      
       // Der Listener liegt hinter den Feldern Straße, Ort und PLZ.
       // D.h., wenn sich in einem der 3 Felder der Wert ändert, wird
       // das Flag gesetzt.
       toolBean.setAFlag(1);
       log.info("1");
       }
       }
      // ----------------------------------------------------------------------------------
       public void strtextChangedHWname (ValueChangeEvent vce) {
       if (vce.getOldValue() != vce.getNewValue()) {
      
       // Der Listener liegt hinter den Feldern Straße, Ort und PLZ.
       // D.h., wenn sich in einem der 3 Felder der Wert ändert, wird
       // das Flag gesetzt.
       log.info("HWname");
       }
       }
      // ----------------------------------------------------------------------------------
       /**
       * HWname Abgleich durchführen
       * @param selectedKunde
       */
       public void hwname_abgleich(Kunde selectedKunde) {
       String hwname_outStatus;
       String eingabeName = "";
       String nachname;
      
       try
       {
       hwname_d.setEinLenAdrname(30);
       hwname_d.setEinLenPersanrede(30);
       hwname_d.setEinSteuerung("KV");
       if(selectedKunde.getTitel_V() != "")
       {
       if(selectedKunde.getTitel_V() != null)
       {
       eingabeName = selectedKunde.getTitel_V() + " ";
       }
       }
       if(selectedKunde.getVorname() != "")
       {
       if(selectedKunde.getVorname() != null)
       {
       eingabeName+= selectedKunde.getVorname() + " ";
       }
       }
       if(selectedKunde.getTitel_Z() != "")
       {
       if(selectedKunde.getTitel_Z() != null)
       {
       eingabeName+= selectedKunde.getTitel_Z() + " ";
       }
       }
       if(selectedKunde.getAdelspraedikat() != "")
       {
       if(selectedKunde.getAdelspraedikat() != null)
       {
       eingabeName+= selectedKunde.getAdelspraedikat() + " ";
       }
       }
       if(selectedKunde.getNachname() != "")
       {
       if(selectedKunde.getNachname() != null)
       {
       eingabeName+= selectedKunde.getNachname() + " ";
       }
       }
       if(selectedKunde.getNachsatzwort() != "")
       {
       if(selectedKunde.getNachsatzwort() != null)
       {
       eingabeName+= selectedKunde.getNachsatzwort();
       }
       }
       hwname_d.setEinName(eingabeName);
       int tmp = Integer.parseInt(hwname_d.Do_HWname_PD());
       if(tmp <= 31)
       {
       selectedKunde.setVorname(hwname_d.getNormVorname(0,0));
       nachname = hwname_d.getNormNachname1(0);
       String dummy = hwname_d.getNachname1(0);
       int t = dummy.length()-1;
       int z = dummy.length();
       if(dummy.substring(t,z).equals("-"))
       {
       nachname += "-";
       }
       else if(hwname_d.getNormNachname2(0)!= "")
       {
       nachname += " ";
       }
       nachname +=hwname_d.getNormNachname2(0);
       selectedKunde.setNachname(nachname);
       selectedKunde.setAdelspraedikat(hwname_d.getNormAdelspraedikat1(0));
       selectedKunde.setNachsatzwort(hwname_d.getNormNachsatzwort(0));
      
       for(int i = 0; i<=4; i++)
       {
       String test = hwname_d.getPositionTitel(0,i);
       if(hwname_d.getPositionTitel(0,i).equals("V"))
       {
       selectedKunde.setTitel_V(hwname_d.getNormTitel(0,i));
       }
       else if(hwname_d.getPositionTitel(0,i).equals("Z"))
       {
       selectedKunde.setTitel_Z(hwname_d.getNormTitel(0,i));
       }
       }
       }
       else
       {
      
       }
       }
       catch (Exception e) {
       e.printStackTrace();
       }
       toolBean.setAFlag(0);
      
       }
      // ----------------------------------------------------------------------------------
       /**
       * HWplz Abgleich durchführen
       * @param selectedKunde
       * @return Link zu einer anderen Seite
       */
       public String hwplz_abgleich(Kunde selectedKunde) {
      
       String hwplz_d_outStatus;
      
       // Muss ein Abgleich durchgeführt werden?
       if (toolBean.getAFlag() == 1) {
      
       try {
       hwplz_d.setSchwellwert("80");
       hwplz_d.setMaxAuswahl("100");
       hwplz_d.setSteuerung("K ");
       hwplz_d.setPLZ(selectedKunde.getPlz());
       hwplz_d.setOrt(selectedKunde.getOrt());
       hwplz_d.setStrasse(selectedKunde.getStrasse_Hsnr());
      
       // Werte für das Anzeigen der Eingabe speichern
       inPlz = selectedKunde.getPlz();
       inOrt = selectedKunde.getOrt();
       inStr = selectedKunde.getStrasse_Hsnr();
      
       hwplz_d_outStatus = hwplz_d.Do_HWplz_D();
      
       // Wurde ein eindeutiger Satz gefunden?
       if (Integer.parseInt(hwplz_d_outStatus) < 100 && Integer.parseInt(hwplz_d_outStatus) != 30 &&
       (hwplz_d.getAnschriftArt(1) == "V" || Integer.parseInt(hwplz_d.getPunkte(1)) >= 90)) {
      
       selectedKunde.setStrasse_Hsnr(hwplz_d.getStrasseKurz(1) + " " +
       hwplz_d.getHausnrFormat(1));
       selectedKunde.setPlz(hwplz_d.getPLZ(1));
       selectedKunde.setOrt(hwplz_d.getOrtLang(1));
       selectedKunde.setOrtsteil(hwplz_d.getOrtsteil(1));
       }
       else if (Integer.parseInt(hwplz_d_outStatus) == 30) {
       FacesMessages.instance().add("Hausnummer falsch oder nicht angegeben!");
       selectedKunde.setAdressen_Sperre("Z");
       }
       else
       {
       return "/kunden/strassen-auswahl.xhtml";
       }
       }
       catch (Exception e) {
       e.printStackTrace();
       };
       toolBean.setAFlag(0);
       }
       return "";
       }
      // ----------------------------------------------------------------------------------
       @Destroy
       @Remove
       public void destroy() {
       }
      }