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() {
}
}