0

フォームの使い方が間違っている可能性があります。アイデアは、detail.content が何らかの HTML を表示し、この部分が正常に機能するというものです。このフォームでは、複数 (1 対多) のメモを入力して右側に表示できるようになっています。

デフォルトのメモが表示されますが、それ以上のメモは表示されません。メモ Bean を詳細 Bean にリンクするにはどうすればよいですか? 私は文字列の「id」を考えていて、それをあるBeanから別のBeanに渡していました。

これは、ある view.xhtml から別の にパラメータを渡すという考え方に似ていますが、すべてが 1 つのページにあるという点が異なります。私は豆を区別したいと思います。最終的には、EJB でこれを行いたいので、EJB はまだ使用していませんが、そのオプションを開いたままにしておきたいと考えています。

ビュー、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>

Bean、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");
    }
}

もう 1 つの Bean Details は正常に動作します。ただし、2 つの Bean を 1 つのページに統合して、2 つの Bean が互いに認識できるようにする方法がわかりません。

4

1 に答える 1