[JSF 2.0] Ausgabe aus Schleife bzw. einer ArrayList

alberti

Mitglied
Hallo zusammen,

ich beziehe aus einer Schleife folgendes:
Java:
while(true){
		++i;
		System.out.println(sf.title);
		System.out.println(sf.path2Ressource);
		System.out.println(sf.relevance);
		System.out.println(sf.summary+ "\n\n");
		if(i >= al.size())
			break;
		sf = al.get(i);
	}
Anmerklung: al ist dabei eine ArrayList aus der ich die Objekte mit den Werten hole.
Bisher sah die Ausgabe auf der Konsole wie oben zu sehen ist aus und funktioniert auch einwandfrei.

Nun ist meine Frage, wie ich diese Werte mittels JSF ausgeben kann, so da diese alle auf der Webseite dargestellt werden?


Nachtrag (Dies könnte hier ein alternativ Lösungsweg für mein Problem sein, d.h. ne Lösung für Ausgabe aus Schleife, würde ich immer noch bevorzugt nehmen :))

Ich habe gelesen, das dies u.a. mit dem <:dataTable-Tag geht. Allerdings gibt es bei mir hier ein paar Probleme.
Hierfür muss ich meine Struktur erklären.
Ich habe eine Klasse HauptStruktur diese wird von einer Klasse SpeziellenStruktur erweitert (extends HauptStruktur).
Dann habe ich wiederum eine Klasse KonkreteStrukturErgebnis, welche wie folgt aussieht:
Java:
import java.util.ArrayList;
public class KonkreteStrukturErgebnis {
	private ArrayList<HauptStruktur> sb;
	
	
	public KonkreteStrukturErgebnis(){
		sb = new ArrayList<HauptStruktur >();
	}
	
	public void addHauptStruktur (HauptStruktur sfr){
		sb.add(sfr);
	}
	
	public ArrayList<HauptStruktur > getHauptStruktur (){
		return this.sb;
	}

}

Diese ist sozusagen meine Struktur, welche eine Liste (genauer ArrayList) von HauptStruktur darstellt und in meinem Fall dazu benutzt als Liste für meine SpeziellenStrukturen (es gibt mehrere) zu dienen.
Dann habe ich eine Klasse EnterpriseSchicht (dies ist eine Klasse für meine Anfragen für meine Enterprise Suche). Dann habe ich eine Klasse Core in welcher wie folgt aussieht:
Java:
public class Core {
	
	final private String host = "localhost";
	
	final private int port = 10000;

	private KonkreteStrukturErgebnis csr;
	public void setSearch(String queryString) throws Exception{
		AbstractSchicht aal = new EnterpriseSchicht(); 

		
		this.csr = aal.response(aal.doConnection(aal.connectionDetails(this.host, this.port)), aal.queryParameters(queryString));
		
		
	}
	
	public KonkreteStrukturErgebnis getSearch(){
		return this.csr;
	}

Der Aufbau ist absichtlich so, um einzelne Teile schnell erweitern bzw. ändern zu können ohne alles neu schreiben zu müssen.
Das Bean sieht wie folgt aus:

Java:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@SessionScoped
public class SearchBean {
private String searchWord;
private Core mycore = new Core();




public Core getMyCore(){
	return this.mycore ;
}




public void setSearchWord(String searchWord)  {
	this.searchWord = searchWord;
}

public String dosearch() throws Exception{
	
		this.mycore.setSearch(this.searchWord );
	
	return null;
}

public String getSearchWord() {
	return searchWord;
}

public String getA() {
	return searchWord;
}



}

Und und nun das Facelet was nicht funktionieren will:
[XML]<h:dataTable var="core" value="#{searchBean.mycore.search}">
<h:column>
<h:eek:utputText value="#{core.titel}"/>

</h:column>
<h:column>
<h:eek:utputText value="#{core.path2Ressource}"/>
</h:column>
<h:column>

<h:eek:utputText value="#{core.relevance}"/>
</h:column>
<h:column>

<h:eek:utputText value="#{core.summary}"/>
</h:column>
</h:dataTable>[/XML]

Es es will mir nicht in den Kopf, warum das Ganze nicht so funktioniert, wie ich es hier dargestellt habe bzw. wie ich eben auch entwickelt habe???:L:mad:

Ich hoffe einer von euch weiß Rat:)




Beste Grüße und besten Dank,

alberti
 
Zuletzt bearbeitet:

alberti

Mitglied
Hallo zusammen,

mittlerweile habe ich das Ausgeben lösen können:
[XML]....
<h:dataTable var="core" value="#{searchBean.mycore.search.hauptStruktur}">
...
[/XML]

Jetzt muss noch die richtig Ausgabe formatiert werden (das ist kein Problem). Allerdings habe ich jetzt bei der Ausgabe das Problem, dass das letzte Element (Suchresultat/SpeziellenStruktur) 2mal ausgegeben wird.
Das Problem hatte ich bei der Konsolenausgabe auch gehabt, konnte es aber wie in der Schleife oben zu sehen lösen.

Hoffe mir kann da jmd. weiterhelfen :)
 
G

gman

Gast
Hi,

kleine Anmerkung zu deinem ersten Code-Beispiel: Wäre sowas nicht einfacher:

Java:
  for(<Typ_von_sf> sf : al) {
    System.out.println(sf.title);
    System.out.println(sf.path2Ressource);
    System.out.println(sf.relevance);
    System.out.println(sf.summary+ "\n\n");
  }

Ich weiss jetzt nicht von welchem Typ die Variablen "al" und "sf" sind, aber
es scheint ja zu passen.
 

alberti

Mitglied
Hi,

danke für Deine Antwort :) Ist in der Tat so einfacher und schöner.
Die Ausgabe an sich funktioniert, nur hätte ich gerne eine etwas andere Darstellung der Daten.
Derzeit sieht diese wie folgt aus:

Code:
<td>Titel</td><td>Relevanz</td><td>Pfad</td><td>Zusammenfassung</td>

ich hätte allerdings gerne solch eine Darstellung:
Code:
<tr><td>Titel</td><td>Relevanz</td></tr><tr>Pfad</tr><tr>Zusammenfassung</tr>

nur wie kann das realisieren, immerhin habe ich kein <h:row-Element???:L
 
G

gman

Gast
Hmm,

dann musst du wohl über deine Hauptstruktur iterieren und dir deine Tabelle selber zusammenbasteln. Weiss
jetzt grad nicht welches Tag fürs iterieren gut ist, aber da gibts was ;-) Also ungefähr so:

Java:
    <iteratorTag var="core" value="#{searchBean.mycore.search.hauptStruktur}">
        <tr>
            <td>Titel</td><td>Relevanz</td>
        </tr>
        <tr>
            <td>Pfad</td><td>Zusammenfassung</td>
        </tr>
    </iteratorTag>
 

alberti

Mitglied
Hi,

habe die Darstellung jetzt hinbekommen mittels PrimeFaces bzw. <p:dataTable:
Code:
<p:dataTable rendered="#{searchBean.searched}" var="core" value="#{searchBean.jesl.search.structResult}"
			selection="#{searchBean.jesl.result}"
			selectionMode="cellblock">
			
			
			<p:column>
				<p:panel header="#{core.title}">
					<h:panelGrid columns="1" border="0" style="width:100%">
						
							<h:outputText value="#{core.summary}" style="color:#006633;" />
						

						
							<h:outputText value="#{core.path2Ressource}"
								style="color:#003366;text-decoration: underline;" />
						

						<h:outputLabel value="Relevanz: "
							style="font: small-caps bold 1em/1.5em verdana, sans-serif;" >
							<h:outputText value="#{core.relevance}" /></h:outputLabel>
					</h:panelGrid>
				</p:panel>


			</p:column>


		</p:dataTable>

Allerdings tun sich hier immer noch 2 (kleine) Problem auf:

Problem 1 - nun gelöst
Das erste Problem ist das sobald ich die einen neue Eingabe mache zum Suchen das ich folgenede Meldung erhalte:
Code:
exception

javax.servlet.ServletException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)

root cause

java.lang.NullPointerException
	java.lang.reflect.Array.newArray(Native Method)
	java.lang.reflect.Array.newInstance(Array.java:52)
	org.primefaces.component.datatable.DataTableRenderer.decodeMultipleSelection(DataTableRenderer.java:174)
	org.primefaces.component.datatable.DataTableRenderer.decodeSelection(DataTableRenderer.java:151)
	org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:63)
	javax.faces.component.UIComponentBase.decode(UIComponentBase.java:790)
	javax.faces.component.UIData.processDecodes(UIData.java:980)
	org.primefaces.component.datatable.DataTable.processDecodes(DataTable.java:379)
	javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1042)
	javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1042)
	javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:941)
	com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

Ich verstehe beim besten Willen nicht, woher der Fehler kommt:bahnhof:.

Problem 2
Das zweite Problem ist, das ich keinen Rand im <h:panelGrid haben möchte (daher auch border=0) allerdings ist überall (im panelGrid also in der Tabelle) ein Rand zu sehen.???:L


Ich hoffe einer von euch kann mir heir weiterhelfen:)



Update
Problem 1 konnte ich lösen, die Bean war als SessionScope deklariert nun habe ich das auf RequestScope geändert und es funktioniert.
 
Zuletzt bearbeitet:
G

gman

Gast
Pack die Style-Informationen für den Rand auch mal in das "style"-Attribut:

Code:
<h:panelGrid columns="1" style="width:100%; border: 0px;">
 

alberti

Mitglied
Hi,

erstmal Danke für eure Schnellen Antworten :),

@Cage Hunter
Was meinst du mit !important, wie und wo genau muss ich das ran hängen?


Besten Dank, alberti
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Servlet Ausgabe richtig benutzen Web Tier 4
M JSP Ausgabe von Java-Objekten Web Tier 7
B JSF --- Reihenfolge der Ausgabe Web Tier 3
J [JSF] bedingte Ausgabe Web Tier 6
B EL Ausgabe Dezimalzahl Web Tier 3
G MyFaces: HTML Ausgabe Code steuern Web Tier 8
A Action-Methode soll Ausgabe auf der Responsepage steuern Web Tier 4
D JSP Programm geht einfach nicht in If-Schleife rein Web Tier 7
S JSTL - foreach Schleife ? Web Tier 3
P For-Schleife mit JSTL über ArrayList Web Tier 8
M In einer HTML Tabelle positionieren Web Tier 4
I Daten einer Datenbank in ein Formular einfügen Web Tier 3
N RequestDispatcher: include-Aufruf einer jsp scheitert nach mehreren forward-Aufrufen Web Tier 1
Shams Problem mit der verwirklichung einer Readmethode in einer Chatapplikation Web Tier 3
F JSF Popup mit einer Checkbox Auswahlliste Web Tier 1
S Rendern einer Komponente nach actionListener Web Tier 2
A Aufruf eines Servlets auf einer JSP Seite funktioniert nicht Web Tier 10
M JSF JSP, Facelets und einbinden einer js-Datei Web Tier 2
J JSF Initialisierung einer ApplicationScoped Bean Web Tier 2
J Anzeige einer Hierarchie Web Tier 5
M Exception beim Erstellen einer Query Web Tier 9
N JSF Architektur/Design einer JEE 6 + JSF 2.x Webanwendung mit Subdomänen Web Tier 4
J Performance einer Webanwendung Web Tier 2
V JSF Rendering abhängig von einer Auswahl Web Tier 8
P JSF Merkwürdiges Verhalten einer Bean Web Tier 11
S Auswahl eine Zeile von einer HTML Tabelle im Servlet Web Tier 4
X JSP Auslesen der Daten einer Session Web Tier 3
J Servlet Manuelles Rendern einer JSF Datei Web Tier 4
1 JSP Mit Daten einer c:forEach Rechnen ? Web Tier 4
H Seiten-reload als Result einer Action Web Tier 3
N Wie mache ich in einer xhtml (JSF) einen redirect? Web Tier 3
F Prinzipielle Architektur einer Web-Anwendung Web Tier 4
E Servlet zum speichern einer Datei in einer Datenbank Web Tier 3
K Analye einer Seite (Java, JSP, ...) Web Tier 12
I Automatische Weiterleitung JSF mit Aufruf einer Methode Web Tier 2
O Focus auf Textfeld, in letzter Reihe einer dataTable Web Tier 2
M Frage zur Konfiguration einer RichFaces DataTable Web Tier 4
I Eine Bean von einer anderen Bean aufrufen Web Tier 2
C PanelGrid aus einer Liste Web Tier 3
J JSF: Initialisieren einer Property mit Wert? Web Tier 5
P Struts2 - Mehrere Methoden/Actions in einer Klasse + Validation Web Tier 2
S Attribute einer HttpSession / unchecked cast Web Tier 8
Schandro JSP soll dynamische Anzahl an Parametern einer JavaScript-Function erzeugen Web Tier 8
N Architektur einer Such-Webanwendung Web Tier 4
E Methode einer Bean aus anderer Bean aufrufen Web Tier 10
F Redirect nach Aufruf einer JSP Web Tier 5
O struts - Gültigkeit einer Action an Session binden?! Web Tier 4
C navigation auf einer jsp Seite Web Tier 3
pusteblume Mehrere Objekte einer Bean Web Tier 10
D JSF+Weiterleitung zu einer Login-Page Web Tier 1
F Darstellung einer Tabelle mit JSP Web Tier 4
F Beim Aufruf von einer JSF Seite eine Methode ausführen Web Tier 9

Ähnliche Java Themen

Neue Themen


Oben