Hallo alle zusammen.
Ich habe ein Problem mit meinem DataModel. Ich arbeite mit Eclipse, JBoss 4.2 und Seam.
Ich habe eine Seite auf der Daten in einem "h:dataTable" dargestellt werden. Das t soweit auch sehr gut. Wenn ich nun allerdings eine Datenzeile auswählen will und mir den RowIndex anzeigen lassen will, dann bekomme ich den Fehler "-1".
Wie komme ich nun an meine ausgewählten Daten?
Bei Aktivierung des Buttons "ok" zur Auswahl eines Datensatzes wird die Funktion "select()" ausgeführt.
Die xhtml-Seite
Die java-Seite
Ich habe ein Problem mit meinem DataModel. Ich arbeite mit Eclipse, JBoss 4.2 und Seam.
Ich habe eine Seite auf der Daten in einem "h:dataTable" dargestellt werden. Das t soweit auch sehr gut. Wenn ich nun allerdings eine Datenzeile auswählen will und mir den RowIndex anzeigen lassen will, dann bekomme ich den Fehler "-1".
Wie komme ich nun an meine ausgewählten Daten?
Bei Aktivierung des Buttons "ok" zur Auswahl eines Datensatzes wird die Funktion "select()" ausgeführt.
Die xhtml-Seite
Code:
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:s="http://jboss.com/products/seam/taglib">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link type="text/css" rel="stylesheet" href="../style.css" />
<title>Thomas Cook - Dialogpflege der Adressclearing-Datenbank</title>
</head>
<body>
<table width="100%">
<tr><td>
<h4 style="line-height: 2">HWplz - Postalische Bereinigung Deutschland</h4>
<h5 style="line-height: 1.5">- Straßen-Auswahlliste -</h5>
</td>
<td style="text-align: center" valign="middle">
<h:graphicImage value="/images/HW-Soft_logo.jpg"/>
</td></tr>
</table>
<h:form id="DLGStrAusw">
<h:messages styleClass="errorMsg"/>
<fieldset class="usrFormPos">
<legend>Anzahl gefundener Sätze: #{strhdl.strassen.rowCount}</legend>
<h:dataTable value="#{strhdl.strassen}" 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>
Die java-Seite
Code:
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
*/
public DataModel getStrassen() {
if(datamodel == null) {
datamodel = new ListDataModel();
datamodel.setWrappedData(getStrassenListe());
}
return datamodel;
}
/*
* Straßen in Liste übernehmen
*/
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
*/
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;
}
public int getSelectedRowIndex() {
return rowIndex;
}
public String select() {
//boolean test = true;
String test;
System.out.println("DWS");
try {
System.out.println("DWS1");
kunde = kundehdl.getSelectedKunde();
rowIndex = datamodel.getRowIndex();
//test = datamodel.isRowAvailable();
}
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");
}
}
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);
}
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() {
}
}