Datamodel - I get no data from the Datamodel
ceene Jun 11, 2008 5:11 AMHi 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() { } }