0

EJBから値を取得するプロパティを持つManagedBeanがあります。JSFには、ManagedBeanプロパティから値を取得するJavascript変数があります。プロジェクトを実行すると、Javascript変数が設定されません。

ManagedBeanで、以下のメソッドを試しましたが、機能しません。

  • プロパティの値をConstructor

  • アノテーション付きのinit()メソッドでプロパティの値を設定する@PostConstruct

  • メソッドで設定しgetMenuData()ます。

JSF JavaScript

<script>
    YAHOO.util.Event.onDOMReady(function ()) {
        // Data to build the menubar
        var menuData = [#{userMenu.menuData}];

        ...
    });
</script>

ManagedBean

package com.qrra.PROFIT.web;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import qrcom.profit.ejb.UserMenuFacade;

@ManagedBean
@ViewScoped
public class UserMenuController {

    public UserMenuController() {
        menuData = usermenu.buildMenuDataByUserProfile("UAT");
    }

    // @PostConstruct
    // public void init() {
    //    menuData = usermenu.buildMenuDataByUserProfile("UAT");
    // }

    public void getMenuData() {
        return this.menuData;
    }

    public void setMenuData(String menuData) {
        // usermenu.buildMenuDataByUserProfile("UAT");
        this.menuData = menuData;
    }

    private String menuData;
    @EJB
    private UserMenuFacade usermenu;

}

ソースを表示すると、表示されるのはvar menuData = [];

これに対する回避策はありますか?

4

1 に答える 1

0

インスタンスが構築される前にインスタンスにEJBを挿入することは不可能であるため、コンストラクターアプローチは失敗します。EJBがであるため、に直面するだけNullPointerExceptionですnull。この@PostConstructアプローチはうまくいくはずです。ビジネスロジックインゲッターのアプローチも問題なく機能しますが、それは明らかに悪い設計です。

でジョブを適切に実行している場合@PostConstruct、コードは正常に見えます。usermenu.buildMenuDataByUserProfile("UAT");あなたの具体的な問題は、それ自体で空の文字列を返すだけであり、したがってあなたの具体的な問題はより高いレベルで解決される必要があることを示唆しています。デバッガーと常識の助けを借りて、あなたはすでにそれを自分で決定しているはずです。

于 2012-12-10T12:16:33.270 に答える