Hallo zusammen,
ich habe ein etwas merkwürdiges Problem. Ich habe zwei JSF-Seiten, auf der einen werden neue Meldungen hinzugefügt(vgl. Listing I) und auf der zweiten Seite werden sie angezeigt. Beide JSFs beziehen ihre Daten aus der selben Bean welche SessionScoped ist. Wenn ich nun auf der einen Seite eine neue Meldung eingegeben habe und danach auf die andere Seite wechsel wird mir der neue Inhalt nicht angezeigt, obwohl ich in Zeile 157 die die Sachen neu auslese. Jemand eine Idee woran das liegen könnte?
Listing I:
[JAVA=130]
try (Dba db = new Dba()) {
List<Ruderer> boot = new LinkedList<>();
for (int i = 1; i <= size; i++) {
try {
Ruderer r;
Field f = this.getClass().getDeclaredField("ruderer" + i);
f.setAccessible(true);
r = (Ruderer) f.get(this);
if (r.getRudererId() == null) {
r.setVerein(selectedVerein);
RudererDAO.save(db, r);
}
boot.add(r);
logger.debug("Ruderer{} : {}", i, r);
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
logger.error(e.getMessage(), e);
}
}
b.setRuderer(boot);
BootDAO.save(db, b);
m.setBoot(b);
if (selectedObmann != null && selectedObmann.getProtektorId() != null) {
m.setObmann(selectedObmann);
}
MeldungenDAO.save(db, m);
rennen = RennenDAO.findByRegatta(db, (Regatta) SessionDAO.getSessionAttribute(SessionAttribute.REGATTA));
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
[/code]
[XML=33]
<c:forEach var="rennen"
items="#{meldungenBean.rennen}">
<div class="rennen">
<div class="rennen_header">
#{rennen.rennnr} - #{rennen.kurzname}
</div>
<c:choose>
<c:when test="${rennen.meldungCollection.size() == 0}">
<div class="verein">
<span>Noch keine Meldungen vorhanden</span>
</div>
</c:when>
<c
therwise>
<c:forEach var="meldung"
items="#{rennen.meldungCollection}">
<div class="verein">
<span class="verein_name">#{meldung.boot.verein.name}</span><br />
<c:forEach var="ruderer"
items="#{meldung.boot.ruderer}"
varStatus="rudererCount">
#{ruderer.name} (#{ruderer.jahrgang}) <c:if test="${!rudererCount.isLast()}">,</c:if>
<c:if test="${rudererCount.count % 2 == 0}"><br /></c:if>
</c:forEach>
</div>
</c:forEach>
</c
therwise>
</c:choose>
</div>
</c:forEach>
[/XML]
ich habe ein etwas merkwürdiges Problem. Ich habe zwei JSF-Seiten, auf der einen werden neue Meldungen hinzugefügt(vgl. Listing I) und auf der zweiten Seite werden sie angezeigt. Beide JSFs beziehen ihre Daten aus der selben Bean welche SessionScoped ist. Wenn ich nun auf der einen Seite eine neue Meldung eingegeben habe und danach auf die andere Seite wechsel wird mir der neue Inhalt nicht angezeigt, obwohl ich in Zeile 157 die die Sachen neu auslese. Jemand eine Idee woran das liegen könnte?
Listing I:
[JAVA=130]
try (Dba db = new Dba()) {
List<Ruderer> boot = new LinkedList<>();
for (int i = 1; i <= size; i++) {
try {
Ruderer r;
Field f = this.getClass().getDeclaredField("ruderer" + i);
f.setAccessible(true);
r = (Ruderer) f.get(this);
if (r.getRudererId() == null) {
r.setVerein(selectedVerein);
RudererDAO.save(db, r);
}
boot.add(r);
logger.debug("Ruderer{} : {}", i, r);
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
logger.error(e.getMessage(), e);
}
}
b.setRuderer(boot);
BootDAO.save(db, b);
m.setBoot(b);
if (selectedObmann != null && selectedObmann.getProtektorId() != null) {
m.setObmann(selectedObmann);
}
MeldungenDAO.save(db, m);
rennen = RennenDAO.findByRegatta(db, (Regatta) SessionDAO.getSessionAttribute(SessionAttribute.REGATTA));
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
[/code]
[XML=33]
<c:forEach var="rennen"
items="#{meldungenBean.rennen}">
<div class="rennen">
<div class="rennen_header">
#{rennen.rennnr} - #{rennen.kurzname}
</div>
<c:choose>
<c:when test="${rennen.meldungCollection.size() == 0}">
<div class="verein">
<span>Noch keine Meldungen vorhanden</span>
</div>
</c:when>
<c
<c:forEach var="meldung"
items="#{rennen.meldungCollection}">
<div class="verein">
<span class="verein_name">#{meldung.boot.verein.name}</span><br />
<c:forEach var="ruderer"
items="#{meldung.boot.ruderer}"
varStatus="rudererCount">
#{ruderer.name} (#{ruderer.jahrgang}) <c:if test="${!rudererCount.isLast()}">,</c:if>
<c:if test="${rudererCount.count % 2 == 0}"><br /></c:if>
</c:forEach>
</div>
</c:forEach>
</c
</c:choose>
</div>
</c:forEach>
[/XML]