我正在尝试创建一个基本数据表,它从数据库中获取值并以表格格式显示。但是,当我尝试调试时,我发现托管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;
}
}
答案 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;