0

私は同じ調査結果を持っているかどうか疑問に思っていますが、jboss maven archetype から生成された javaee6 Web プロジェクトを作成した後、次の結果が得られました。

f:viewParam は、リクエスト スコープでのみ依存またはビュー スコープで機能しませんでした。

public class BaseBean {
    protected boolean edit;

    public boolean isEdit() {
        System.out.println("get edit=" + edit);
        return edit;
    }

    public void setEdit(boolean edit) {
        System.out.println("set edit=" + edit);
        this.edit = edit;
    }
}

@Named
@RequestScoped
public class RequestBean extends BaseBean { }

@Named
public class DependentBean extends BaseBean { }

@Named
@ViewScoped
public class ViewBean extends BaseBean { }

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    template="/WEB-INF/templates/default.xhtml">

    <ui:define name="metadata">
        <f:metadata>
            <f:viewParam name="edit" value="#{dependentBean.edit}" />
        </f:metadata>
    </ui:define>


    <ui:define name="content">
        <h:outputText value="#{dependentBean.edit}"></h:outputText>
    </ui:define>
</ui:composition>

request および view スコープのビューについては、使用される管理 Bean を除いて、上記のものとほとんど同じです。

何か案が?

4

1 に答える 1

3

javax.faces.bean問題は、パッケージからの JSF アノテーションとパッケージからの CDI アノテーション (の使用によって認識される@Named) を混在させjavax.enterprise.contextており、異なるマネージャー (JSF および CDI マネージャー) によって処理されるためにそれらを完全に使用できないことです。アプリケーションでは、マネージド Bean は、両方の混合ではなく、JSF または CDI からのものである必要があります。

CDI はまだサポートしていないことに注意してください@ViewScoped。このスコープは JSF でのみ使用できます。詳細: CDI に @ViewScoped と @FlashScoped がありません

于 2013-06-08T15:19:32.547 に答える