JSF Daten aus Formular werden nicht übernommen

inv_zim

Gesperrter Benutzer
Hi,

ich fange gerade an, mit JEE zu arbeiten und orierntiere mich an einem Beispiel, das ich gefunden habe.

Ich habe ein kleines Formular angelegt, um Bandnamen zu erfassen und das ganze mit JSF an eine Bean gekoppelt. Der Code:

home.xhtml
Java:
<h:form id="artistEdit">
	<h:inputText value="#{artistBean.artist.name}" id="name"/>
	<h:message for="name" styleClass="errorMessage"/>
	<br />
	<h:commandButton action="#{artistBean.save}" value="Submit" />
</h:form>

ArtistBean.java
Java:
@Named("artistBean")
@RequestScoped
public class ArtistBean {
	
	@Inject
	private ArtistDao artistDao;	
	private Artist artist = new Artist();

	public void save() {
		artistDao.persist(artist);
		artist = new Artist();
	}
	
	public Artist getArtist() {
		return artist;
	}

	public void setArtist(Artist artist) {
		this.artist = artist;
	}
}

ArtistDao.java
Java:
@Stateless
public class ArtistDao {
	
	@Inject
	@DataRepository
	private EntityManager entityManager;
	
	public void persist(Artist artist) {
		entityManager.persist(artist);
	}
	
	@SuppressWarnings("unchecked")
	public List<Artist> getAll() {
		return entityManager.createQuery("SELECT a FROM Artist a").getResultList();		
	}
	
	public Artist getArtist(int id) {
		Query query = entityManager.createQuery("SELECT a FROM Artist a WHERE id = ?");
		query.setParameter(0, id);
		return (Artist) query.getSingleResult();
	}	
}

Artist.java
Java:
@Entity
public class Artist {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int id;

	@Column
	@NotNull
	@NotEmpty
	private String name;

	public void setId(int id) {
		this.id = id;
	}

	public int getId() {
		return id;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}
}

Wenn ich nun den Namen eintrage und auf den Submit Button drücke, bekomme ich die Meldung, dass ein Constraint verletzt ist. Hebe ich die Constraints (@NotNull und @NotEmpty) vom Bandnamen auf, schreibt er mir <null> Werte in die Datenbank. Ich dachte eigentlich, ich hätte mich am Beispiel orientiert, aber irgendwie mag er das nicht. Findet jemand den Fehler? Ich probiere jetzt seit locker zwei Stunden daran rum...

Gruß,

Tim
 

inv_zim

Gesperrter Benutzer
Was bewirkt das in der Theorie, wo liegt der Unterschied zwischen den beiden? Also wie würde sich die Bean dann anders verhalten? Ich würde mir jetzt herleiten, dass die Bean vorher nur eine Request lang existiert hat, und jetzt innerhalb der Session?

Ich habe den Scope jetzt getauscht und bekomme beim Versuch, den Artist zu speichern immer noch eine ConstraintValidationException. Im Debugger sehe ich, dass die ArtistBean in der save() Methode immer noch versucht, einen Artist mit leerem Namen zu speichern.
 
G

Gast2

Gast
Was bewirkt das in der Theorie, wo liegt der Unterschied zwischen den beiden? Also wie würde sich die Bean dann anders verhalten? Ich würde mir jetzt herleiten, dass die Bean vorher nur eine Request lang existiert hat, und jetzt innerhalb der Session?

Chapter*5.*Scopes and contexts

Ich habe den Scope jetzt getauscht und bekomme beim Versuch, den Artist zu speichern immer noch eine ConstraintValidationException. Im Debugger sehe ich, dass die ArtistBean in der save() Methode immer noch versucht, einen Artist mit leerem Namen zu speichern.

Welchen Scope mit import hast du genommen?
 

inv_zim

Gesperrter Benutzer
Welchen Scope mit import hast du genommen?

Den javax.faces.bean.SessionScoped.

Beim javax.enterprise.context.SessionScoped bekomme ich beim starten des JBossAS (bzw. danach beim Initialisieren des Projekts) die Fehlermeldung "Managed bean declaring a passivating scope must me passivation capable."
 
Zuletzt bearbeitet:
G

Gast2

Gast
Den javax.faces.bean.SessionScoped.

Das ist der falsche du musst javax.enterprise.context.SessionScoped oder javax.enterprise.context.RequestScope verwenden.

Beim javax.enterprise.context.SessionScoped bekomme ich beim starten des JBossAS die Fehlermeldung "Managed bean declaring a passivating scope must me passivation capable."

Ja logo dein Objekt muss Serializable implementieren weil es beim SessionScope immer an den Client übertragen wird.
 

inv_zim

Gesperrter Benutzer
Vielen Dank für die Hilfe, auf manche Sachen muss man wohl mit der Nase gestoßen werden. :oops:

Wünsche euch noch einen schönen Tag :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Daten einer Datenbank in ein Formular einfügen Web Tier 3
P Formular-Daten-Überprüfung - Eingaben im Fehlerfall behalten Web Tier 2
S Daten von Client empfangen Web Tier 1
J Servlet Einschätzung anderer zu Daten-Repositories Web Tier 3
N JSF CommandButton Daten aus anderem Form auslesen Web Tier 3
C JSF JSF Daten aus Klasse werden nicht angezeigt Web Tier 4
X SQL Datenbank-Daten in ApplicationScoped ManageBean zwischenspeichern? Web Tier 4
P JSF Primefaces Picklist-Ersatz mit vielen Daten Web Tier 4
F Wo und wie Daten die für alle Benutzer bestimmt sind verwalten Web Tier 4
H JSF Daten aus ManagedBean können vom Controller gelesen werden Web Tier 6
P SelectOneMenu liest Daten nicht ein Web Tier 7
X JSP Auslesen der Daten einer Session Web Tier 3
R Daten Streamen mit Servlets. Web Tier 4
T Post Daten Abfangen Web Tier 59
1 JSP Mit Daten einer c:forEach Rechnen ? Web Tier 4
T Daten - DB-Abfrage - Tabelle Web Tier 5
H Daten von Webseiten bekommen Web Tier 6
T Einfach nur Daten im JSP ausgeben Web Tier 2
S Daten zwischen 2 Servlets aus 2 Webapplikationen teilen? Web Tier 17
R Wo Daten manipulieren? Client oder Server? Web Tier 3
N Tabelle dynamisch mit Daten aus Datenbank füllen Web Tier 3
sliwalker forEach und Scriptlet: Daten aus Scriptlet in jstl sehen Web Tier 2
S [SelectItems value(herkunft bean)] in [UI:repeat] lädt daten nicht neu nach Web Tier 3
T Daten aus der Form holen Web Tier 2
U JSP form-Daten (ohne name-Attribut) an Servlet = Problem Web Tier 6
G Daten von ablaufenden Sessions speichern? Web Tier 3
F Formular nach erfolgreichem Login ausblenden Web Tier 0
F Formular ausblenden lassen Web Tier 0
E Kann man ein Formular in JSP auch per Tastendruck ohne Javascript-Verwendung abschicken? Web Tier 2
S Dynamisch Drop-Down Menüs und Formular Feld Bindings Web Tier 4
T JSF Formular in Accordion Panel Web Tier 11
H XML Datei mit Formular eingaben Füllen JSP Web Tier 7
D Servlet JSP Umfrage ohne Formular Web Tier 2
B direkte Formular-Korrektur Web Tier 7
G Formular ausfüllen Web Tier 55
D Formular als Applet oder HTML Web Tier 6
S Formular Generator Web Tier 4
M Formular Überprüfung Web Tier 4
L Umlaute von Formular mit request holen Web Tier 16
P request.getParameter("name") von Formular auf JSP-Seite leer Web Tier 5
P JSF-Formular mit DataTabel Web Tier 8
Psypsy Spring Thymeleaf Layer werden nicht angezeigt. Web Tier 0
R JSF Bilder aus CSS Datei werden nicht angezeigt. Web Tier 2
H JSF jsf/sessionScoped Bean - Bilder (jpg) werden nicht richtig dargestellt Web Tier 1
X JSF - Auf was muss in Bezug auf Sicherheit geachtet werden?? Web Tier 7
L Applet kann unter WEB-INF/classes nicht gefunden werden Web Tier 10
R JSF Beans werden nicht ausgeführt Web Tier 4
B JSF Servlectexception: Verwalteter Bean "..bean" kann nicht erstellt werden Web Tier 2
I Sessions werden ungewollt automatisch erzeugt??? Web Tier 3
R Message Bundles werden nicht geladen Web Tier 2
H im IE werden leere Bilder mit X gekennzeichnet Web Tier 4
J JSP-Seite kann nicht aufgerufen werden Web Tier 14
H JSF - Methode kann nicht aufgerufen werden Web Tier 5
O JSP: HTML tags werden vor struts tags angezeigt Web Tier 3
D Bilder werden nicht angezeigt Web Tier 2
D Bilder werden nicht angezeigt Web Tier 21
G elemente werden nicht dargestellt - 'webui' ist undefiniert Web Tier 5

Ähnliche Java Themen

Neue Themen


Oben