Dynamische Eingabe-Tabelle mit JSF

Status
Nicht offen für weitere Antworten.
L

LordZed

Gast
Hallo!

Ich arbeite zur Zeit an einem Projekt mit JSF und stehe gerade vor dem folgenden Problem:

In einem Eingabeformular wird mit JSF eine Tabelle geladen in dem Werte bereits enthalten sind. Diese Tabelle kann vom User über ein JavaScript manipuliert werden (neue Datensätze hinzu, alte löschen) - leider gibt es ja kein FORM-Tag für eine Tabelle. Nun stellt sich mir die Frage, was ich tun muss, damit diese neuen Zeilen im Bean verfügbar sind und ich sie im weiteren Verlauf der Web-Anwendung nutzen kann. Kann mir da vielleicht jemand helfen!? Hoffe ihr wisst, was ich meine :)

Gruß, LordZed
 
G

Guest

Gast
So meinte ich das ja jetzt auch nicht!

Also ich versuchs mal mit Code zu erklären. Ich habe eine Seite mit einem Formular, das etwa so aussieht:

<form>
<input type="text"></input>
<input type="text"></input>
<input type="text"></input>
<table>
<tr>
<th>Vorname</th>
<th>Nachname</th>
</tr>
<tr>
<td>Max</td>
<td>Mustermann</td>
</tr>
</table>
</form>

Hier werden die Inhalte der Textfelder und der Tabellenzeilen dynamisch über JSF aus einer Bean gelesen.

Nun ist es dem User möglich über ein JavaScript der Tabelle neue Zeilen hinzuzufügen und meine Frage ist, was ich tun muss, damit diese über ein JavaScript hinzugefügten Zeilen ebenfalls in der Bean enthalten sind, oder muss ich da nichts weiter tun!?
 

ps

Bekanntes Mitglied
ich habe zwar nicht viel Ahnung von JSF, aber so kann das nicht funktionieren.

Wenn du per JavaScript das hinzufügst ist das erstmal nur auf dem Client (also dem Browser) bekannt.

Da eine Tabelle kein Formularelement ist wird das auch nicht bei einem Submit mit dem request übertragen (jaa, tut mir leid, das web ist nunmal http ;) auch wenn jsf das nicht wahrhaben möchte.) Deine einzige chance ist es das Formular dynamisch per JS zu manipulieren. (ZB. für jede neue Zeile in der Tabelle ebenfalls ein oder mehrere hidden fields einfügen).
 
G

Guest

Gast
ok! dann habe ich da in jeder Tabellenzelle ein hiddenfield oder ein Textfield, das ich per CSS so manipuliere, dass man nicht mehr sieht, dass es ein Textfeld ist... aber landen neue Formularfelder der Tabelle dann auch wirklich in der Bean!?

Ich glaube ich werde in einer kleinen Testanwendung damit einfach mal rumspielen müssen! ;)
 
L

LordZed

Gast
Also der Code der JSF-Datei sieht jetzt so aus:
Code:
<h:form id="myForm">
	<h:dataTable value="#{dataBean.elements}" var="elem" id="myTable">
		<h:column id="colOne">
			<f:facet name="header"><h:outputText value="Vorname" /></f:facet>
			<h:inputText value="#{elem.vorname}" id="valOne" />
		</h:column>
		<h:column id="colTwo">
			<f:facet name="header"><h:outputText value="Nachname" /></f:facet>
			<h:inputText value="#{elem.nachname}" id="valTwo" />
		</h:column>
		<h:column id="colThree">
			<f:facet name="header"><h:outputText value="Delete" /></f:facet>
			<h:outputLink value="javascript:delRow(0);" id="valThree">
				<f:verbatim>Klick</f:verbatim>
			</h:outputLink>
		</h:column>
	</h:dataTable>
	<h:commandButton id="submit" value="Abschicken"/>
</h:form>

Die Funktion delRow(0) die ich jetzt testweise überall eingetragen habe löscht die erste Zeile der Tabelle. Funktioniert auch wunderbar, allerdings ist die Zeile, sobald ich auf "Abschicken" geklickt habe im nächsten Schritt trotzdem da!
 
M

maki

Gast
So geht das nicht in JSF, suhe dir lieber eine JSF KOmponente die das bereits unterstützt.

Da eine Tabelle kein Formularelement ist wird das auch nicht bei einem Submit mit dem request übertragen (jaa, tut mir leid, das web ist nunmal http icon_wink.gif auch wenn jsf das nicht wahrhaben möchte.

Hi ps,

stimmt so nicht, eine Tabelle ist in JSF teil eines Formulars, und serverseitig ist sie Teil des Komponentenbaums, http dagegen ist so gut wie irrelevant mit JSF.
 

Terminator

Aktives Mitglied
1. AJAX Post zum Server
2. Dort Element aus dem Model löschen/hinzufügen
3. Status/Message zurück zum Client senden
4. Client rendered Liste entsprechend des Return Status
 
G

Guest

Gast
maki hat gesagt.:
So geht das nicht in JSF, suhe dir lieber eine JSF KOmponente die das bereits unterstützt.

Da eine Tabelle kein Formularelement ist wird das auch nicht bei einem Submit mit dem request übertragen (jaa, tut mir leid, das web ist nunmal http icon_wink.gif auch wenn jsf das nicht wahrhaben möchte.

Hi ps,

stimmt so nicht, eine Tabelle ist in JSF teil eines Formulars, und serverseitig ist sie Teil des Komponentenbaums, http dagegen ist so gut wie irrelevant mit JSF.
Wo finde ich denn solche fertigen Komponenten, die ich auch frei benutzen kann?

Terminator hat gesagt.:
1. AJAX Post zum Server
2. Dort Element aus dem Model löschen/hinzufügen
3. Status/Message zurück zum Client senden
4. Client rendered Liste entsprechend des Return Status
Das's ja nun aber keine Lösung des Problems mit JSF sondern eine ganz andere Methode ^^
 

Terminator

Aktives Mitglied
> Das's ja nun aber keine Lösung des Problems mit JSF sondern eine ganz andere Methode

Doch das ist die Lösung für JSF, bei normalen Servlet/JSP brauchst du ja eben nicht den Server State zu synchronisieren.
Ob du dafür eine fertige Kompo nimmst, dir eine eigene Kompo baust oder das einmalig per JS codierst bleibt dir überlassen.


> Wo finde ich denn solche fertigen Komponenten, die ich auch frei benutzen kann?

Soviel ich weiss bietet A4J da ZusatzTags an, habs aber selber nicht in Verwendung
 
G

Gast

Gast
Würde mich mal bei Richfaces von JBoss umsehen, AJAX supporot kommt da von Haus aus mit, ausserdem gibt es viele andere freien JSF Komponenten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J dynamische jsf-seite programmatisch erstellen Web Tier 1
E Wie kann ich dynamische HTML- Tabellen(-spalten) mit JSP aus SELECT-Anweisung erstellen? Web Tier 2
M JSF Dynamische Größe bei Primefaces Komponenten Web Tier 2
nrg Dynamische Tabelle Web Tier 4
M JSF Composite components - dynamische dataTable? Web Tier 8
M Problem mit Verlinkung JSP Dynamische Tabelle Web Tier 7
D Dynamische Listen aus der DB holen Web Tier 3
K Dynamische Inhalt auf ein "DIV" laden Web Tier 2
J [JSF] Dynamische Includes (iterative includes) Web Tier 4
MrWhite Facelets: Dynamische Attribute Web Tier 3
Schandro JSP soll dynamische Anzahl an Parametern einer JavaScript-Function erzeugen Web Tier 8
D Richfaces (Seam/Hibernate): dynamische Eingabefelder Web Tier 2
R JSF dynamische Tag Auswahl Web Tier 4
pusteblume Struts multibox - dynamische checkboxen Web Tier 5
G dynamische weboberflächen mit jsf? Web Tier 9
eskimo328 dynamische Navigaiton und JSF (facelets) Web Tier 6
J 404 Error bei Eingabe URL (Glassfish 5) Web Tier 4
P JSP Eingabe eines Strings Web Tier 2
S EL double auf Eingabe checken Web Tier 3
S Style bei fehlerhafter Eingabe (Bean Validation) ändern Web Tier 2
M In einer HTML Tabelle positionieren Web Tier 4
W Tabelle wird nicht aktualisiert Web Tier 8
H Frameset durch Tabelle ersetzten - Probleme mit jsp:include Web Tier 3
S JSP STRUCT Elemente in HTML Tabelle Web Tier 8
M JSF Wiederverwendbare Tabelle Web Tier 3
R Zugriff Validator in Tabelle (ui:repeat) auf andere Felder Web Tier 2
S Auswahl eine Zeile von einer HTML Tabelle im Servlet Web Tier 4
C Aktualisieren eine Tabelle mit OnetoMany-Beziehuung Web Tier 6
T Daten - DB-Abfrage - Tabelle Web Tier 5
K JSF: Tabelle; Button, Stringausgabe Web Tier 2
N Tabelle dynamisch mit Daten aus Datenbank füllen Web Tier 3
T Tabelle mit checkboxen in Struts Web Tier 19
T Iterate Tabelle mit verschiedenen Hintergründen (Stylesheet) Web Tier 7
F Darstellung einer Tabelle mit JSP Web Tier 4
N JSF-Tabelle erstellen aus Datenbank mittels JDBC Web Tier 12

Ähnliche Java Themen

Neue Themen


Oben