【问题标题】:Javascript Variable Value Get From ManagedBean Property从 ManagedBean 属性获取 Javascript 变量值
【发布时间】:2012-12-10 08:11:20
【问题描述】:

我有一个 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 = [];

有解决办法吗?

【问题讨论】:

  • 我更喜欢使用h:inputHidden ,比如&lt;h:inputHidden id="someId" value="#{userMenu.menuData}" /&gt;,而不是通过它的id来访问它(可能有formId前缀......除非使用prependId="false"

标签: javascript jsf-2 managed-bean


【解决方案1】:

构造方法会失败,因为在构造实例之前在实例中注入 EJB 是 impossible,您只会遇到 NullPointerException,因为 EJB 是 null@PostConstruct 方法应该可以正常工作。 business-logic-in-getter 方法也可以正常工作,但它是plain bad design

如果您在@PostConstruct 中正确执行作业,您的代码看起来不错。您的具体问题表明 usermenu.buildMenuDataByUserProfile("UAT"); 本身只返回一个空字符串,因此您的具体问题需要在更高级别上解决。您应该已经借助调试器和常识自行确定了。

【讨论】:

  • 我再次尝试使用@PostConstruct 注释并启动调试器并找出问题所在。 EJB 方法中的错误。我专注于问题的错误方面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 2019-01-11
  • 2016-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多