1

私は、web.xmlでjavax.faces.PROJECT_STAGEを「production」に設定しようとしていますが、実行時に、値は常に「development」であることがわかります。デバッグは非常に奇妙なことを示し、状況に到達することはできません。GF3.0.1とGF3.1の両方で試してみました-同じです。

これが私のweb.xmlの一部です:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/applicationContext*.xml</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/rstk-tag.taglib.xml</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>rstk.DOWNLOAD_PATH</param-name>
    <param-value>c:\glassfish3.1\downloads</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value>
</context-param>

この

FacesContext.getCurrentInstance().getApplication().getProjectStage()

常に開発を返します!

助けていただければ幸いです。GF3.1のJSF2.1は、開発モードでイライラする警告を表示するため、これは私にとって本当のストッパーです。

4

3 に答える 3

3

さて、ついに私はこのスタッフの本当の理由を見つけました。

Jrebelです。いくつかの理由で、jsfの開発モードを強制します。詳細については、 http://java.net/jira/browse/JAVASERVERFACES-2079?page = com.atlassian.jira.plugin.system.issuetabpanels:all- tabpanel-コメントブロックを参照してください。他の人も同じ問題を抱えていて、最終的に根本的な理由を見つけました。

これがみんなのお役に立てば幸いです。

于 2011-06-15T06:49:27.227 に答える
0

解決策ではありませんが、いくつかのアイデア:

プロジェクトステージのcontext-paramを削除するとどうなりますか?私が覚えている限り、web.xmlまたはdefault-web.xmlで何も定義されていない場合は、Productionをデフォルトのステージにする必要があります。

別のアイデア:default-web.xmlはglassfish / glassfish / configディレクトリでどのように表示されますか?

context-paramをパラメーターの最初の位置に移動してみてください。

于 2011-03-15T10:05:25.993 に答える
0

バグを修正できませんでした。なぜWeldApplicationが開発段階を返し続けるのか、デバッグが少し奇妙に動作し、本当の理由を得ることができませんでした。手動でWeldApplicationFactoryを設定しようとしましたが、結果はありませんでした。最後に、私は醜い回避策を作成しましたが、ステージを変更し、JSFからの迷惑なメッセージ(Mojarraチームへの「挨拶」)を取り除くのに役立ちました

まず、WeldApplicationFactoryをオーバーライドして、独自のアプリケーションを返します。

public class CustomApplicationFactory extends WeldApplicationFactory {



/**
 * TBD
 * @param delegate
 */
public CustomApplicationFactory(ApplicationFactory delegate) {
    super(delegate);
    this.delegate = delegate;
}
private final ApplicationFactory delegate;

private Application application;


@Override
public void setApplication(Application application) {
    this.application = application;
    delegate.setApplication(application);
}

@Override
public Application getApplication() {
    if (application == null) {
        application = new HuckApplication(delegate.getApplication());
    }
    return application;
}

}

次に、WeldApplicationをオーバーライドします。

/*

**2011年3月13日に作成**$ Project $ * $ Workfile $ * $ Revision $ * /

パブリッククラスHuckApplicationはWeldApplicationを拡張します{

/**
 * TBD
 * @param application
 */
public HuckApplication(Application application) {
    super(application);
    // TODO Auto-generated constructor stub
}

/**
 * @see javax.faces.application.ApplicationWrapper#getProjectStage()
 */
@Override
public ProjectStage getProjectStage() {
    return ProjectStage.Production;
}

}

新しいApplicationFactoryをfaces-config.xmlに登録します。

これは私にとってはうまくいきましたが、このソリューションはまったく美しくはありませんが、Mojarra / Glassfishのバグに悩まされることなく、自分自身の開発に取り掛かることができます:)

于 2011-03-16T05:13:37.560 に答える