Möglicherweise verwende ich Formulare falsch. Die Idee ist, dass detail.content etwas HTML anzeigt, und dieser Teil funktioniert gut. Das Formular soll mehrere (one-to-many notes) eingeben und auf der rechten Seite anzeigen lassen.übergeben Sie Params zwischen JSF-Beans für eine einzige Ansicht.xhtml
Während die Standardnote angezeigt wird, sind mehr Noten nicht .. Wie verknüpfe ich die Note-Bean mit der Detail-Bean ? Ich dachte an eine Zeichenfolge "ID" und übergibt das von einer Bohne zur anderen.
Dies ist ähnlich der Idee von passing params from one view.xhtml to another, mit der Ausnahme, dass es alles auf einer Seite ist. Ich möchte die Bohnen unterscheiden. Letztendlich ., ich würde das die mit EJB gerne tun, und so, dass die Option offen halten wollen, während noch nicht EJBs mit
Ansicht, detail.xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
template="./complexTemplate.xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/core">
<ui:define name="top">
<h:form>
<h:outputLink id="back" value="detail.xhtml">
<f:metadata>
<f:viewParam name="id" value="#{detail.id}" />
</f:metadata>
<f:param name="id" value="#{detail.back()}" />
<h:outputText value="back" />
</h:outputLink>
</h:form>
<h:form>
<h:outputLink id="forward" value="detail.xhtml">
<f:metadata>
<f:viewParam name="id" value="#{detail.id}" />
</f:metadata>
<f:param name="id" value="#{detail.forward()}" />
<h:outputText value="forward" />
</h:outputLink>
</h:form>
</ui:define>
<ui:define name="content">
<h:outputText escape="false" value="#{detail.content}"></h:outputText>
</ui:define>
<ui:define name="right">
<p>#{notes.note.id}</p>
<p>#{notes.note.comment}</p>
<h:form>
<h:inputText value="#{notes.note.comment}" />
<h:commandButton value="add note"
action="#{notes.commentAction()}"/>
</h:form>
</ui:define>
</ui:composition>
Bohne, Notes.java:
package net.bounceme.dur.nntp;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.enterprise.context.Dependent;
import javax.inject.Named;
@Named
@Dependent
public class Notes {
private static final long serialVersionUID = 1L;
private static final Logger logger = Logger.getLogger(Notes.class.getName());
private static final Level level = Level.INFO;
private Note note = new Note();
public Notes() {
logger.log(level, "Notes..");
}
public Note getNote() {
return note;
}
private void setNote(Note note) {
this.note = note;
}
public void commentAction() {
logger.log(level, "Notes.newNote.."); note.setId("messageIdGoesHere");
note.setComment("hmmm");
}
}
Die andere Bohne, Details, funktioniert gut. Ich bin mir jedoch nicht sicher, wie ich zwei Beans auf eine Seite integrieren kann, damit sich die beiden Beans gegenseitig kennen.