【发布时间】: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,比如<h:inputHidden id="someId" value="#{userMenu.menuData}" />,而不是通过它的id来访问它(可能有formId前缀......除非使用prependId="false")
标签: javascript jsf-2 managed-bean