ManagedBean函数未被调用

时间:2013-12-11 13:27:19

标签: jsf managed-bean

我正在尝试创建一个基本数据表,它从数据库中获取值并以表格格式显示。但是,当我尝试调试时,我发现托管bean函数没有被调用。以下是代码

list.xhtml:

<h:body>
    <h3>Expense list</h3>


    <h:dataTable value="#{userMB.entries}" var="e" styleClass="table"
        headerClass="table-header" rowClasses="table-odd-row,table-even-row">

        <h:column>
            <f:facet name="header">Date</f:facet>
            #{e.date}
        </h:column>     
    </h:dataTable>
</h:body>

UserMB.java

@ManagedBean
@SessionScoped
public class UserMB {

    private List<Entry> entries;

    @EJB(mappedName = "entryServices")
    private EntryServices entryServices;

    public UserMB() {

    }

    @PostConstruct
    public void init() {

        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context
                .getExternalContext().getRequest();
        HttpSession httpSession = request.getSession(false);
        User user = (User) httpSession.getAttribute("user");
        entries = new ArrayList<Entry>();
        entries = entryServices.getEntryByUser(user);
    }

    public List<Entry> getEntries() {
        return entries;
    }

    public void setEntries(List<Entry> entries) {
        this.entries = entries;
    }

    public EntryServices getEntryServices() {
        return entryServices;
    }

    public void setEntryServices(
            EntryServices entryServices) {
        this.entryServices = entryServices;
    }

}

2 个答案:

答案 0 :(得分:1)

我没有在代码或facelet中看到任何错误,当我使用eclipse时有时我没有为注释选择正确的包装,必须是javax.faces.ManagedBean和javax.faces.SessionScoped否则bean永远不会创建。 在Glassfish中,当我在ManagedBean中使用EJB时​​,需要序列化才能尝试这个。 我希望这可以帮到你。

答案 1 :(得分:0)

这是我的问题。

更改导入和工作:

import javax.faces.bean.ManagedBean;

import javax.faces.bean.RequestScoped;