簡體   English   中英

Javascript變量值從ManagedBean屬性獲取

[英]Javascript Variable Value Get From ManagedBean Property

我有一個具有屬性的ManagedBean,該屬性從EJB獲取其值。 在JSF中,我有一個Javascript變量,然后從ManagedBean屬性中獲取其值。 當我運行項目時,未設置Javascript變量。

在ManagedBean中,我嘗試了以下方法,但不起作用:

  • Constructor設置屬性的值

  • 使用@PostConstruct批注在init()方法中設置屬性的值

  • 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 = [];

有沒有解決方法?

構造器方法將失敗,因為在構造實例之前不可能在實例中注入EJB,因為EJB為null ,所以您只會面對NullPointerException @PostConstruct方法應該可以正常工作。 結合使用業務邏輯的方法也可以很好地工作,但這顯然是糟糕的設計

只要您正確地在@PostConstruct執行作業,您的代碼就可以了。 您的具體問題表明usermenu.buildMenuDataByUserProfile("UAT"); 僅返回一個空字符串,因此您的具體問題需要在更高層次上解決。 您應該已經在調試器和常識的幫助下自行確定了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM