0

私は JSF 2.0 が初めてで、自分のページにメッセージを出力しようとしています。入力を受け入れ、処理を行い、出力を表示するフォームが必要です。かなり単純に見えますよね?ただし、次の方法で出力を表示するために、バッキング Bean でプロパティを定義したくありません。

<h:outputText value="#{bean.property}" />

そのアプローチは私には非常に面倒に思えます。表示するステータス メッセージごとにメンバー変数が必要です。また、次のように出力表示をフォーム変数にバインドしたくありません。

<h:inputText id="someId" />
<h:message for="someId" />

私のステータス結果に対応するフォーム変数がないためです。メッセージの設定とグローバル メッセージの使用:

<h:messages globalOnly="true" />

ページ上の複数の要素を更新する必要がある可能性があるため、うまく機能しません(すべてのステータスメッセージを同じdivにまとめないでください)。

Spring MVC から来て、ビューに渡される ModelAndView オブジェクトに任意のプロパティを設定し、ビュー内からそれらのプロパティにアクセスできます。JSFでこれを行う対応する方法はありますか?

ありがとうございました。

4

2 に答える 2

2

ビューで任意の変数を簡単に利用できるようにするために、次のように入力することで、たとえばリクエストスコープでマップを定義できますfaces-config.xml

<managed-bean>
    <description>Request scoped map for general usage</description>
    <managed-bean-name>map</managed-bean-name>
    <managed-bean-class>java.util.HashMap</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

このマップをバッキングBeanに挿入するか、プログラムでリクエストしてから、何かを入れることができます。例えば:

@ManagedBean
public class GeneralMapBacking {

    @ManagedProperty("#{map}")
    private Map<Object, Object> map;

    public void onPreRenderView() {
        map.put("foo", "bar");
    }

    public void setMap(Map<Object, Object> map) {
        this.map = map;
    }  
}

このマップは、FaceletのELを介して参照できます。例:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
>
    <h:body>   
        <f:event listener="#{generalMapBacking.onPreRenderView}" type="preRenderView" />

        #{map.foo}       
    </h:body>
</html>
于 2012-09-18T21:37:29.950 に答える
0

質問を理解しているかどうかわかりません。私はSpring MVCにも慣れていないので、その例は私を通り過ぎたと言わなければなりません。

ただし、基本的には、出力サーバー側を構築するか、別のコンポーネントを使用する必要があるように思えます。

たとえば、シングル<h:outputText>を使用し、連結されたデータを返すゲッターで使用します。

または<h:dataTable>、データを表示するために a を使用する必要がありますか?

または、他のコンポーネントを使用して出力したい場合もあります。テキスト付きのボックスが必要なだけのように思えます。そのために、私自身は連結された outputText を使用します。

見栄えの良い出力を得るには、primefaces、richfaces、または icefaces を調べることをお勧めします。私は自分でプライムフェイスを好みますが、これは見栄えがするかもしれません:

http://www.primefaces.org/showcase-labs/ui/dataListUnordered.jsf

于 2012-09-18T18:43:45.643 に答える