[英]Unable to get <h:outputText value from Java class
我在获取tUser的名称并将其打印在屏幕上时遇到问题。 可能是我没有调用正确获取名称的方法(),因为当我调用函数listAgencies时,它将在Eclipse控制台中正确打印它们。 感谢您的任何建议!
在.xthml文件中,我有:
<h:panelGrid id="panel2" columns="2" cellpadding="5">
<c:forEach items="${agencyBean.listAgencies()}" var="inputBoxes">
<h:outputText value="${inputBoxes.gettUser().name}" />
<h:inputText />
</c:forEach>
</h:panelGrid>
我的豆类:
@ManagedBean(name = "agencyBean")
@SessionScoped
public class AgencyBean {
private TAgency tEventType = new TAgency();
public void listAgencies() {
EntityManager em = HibernateUtil.getEntityManager();
// read the existing entries and write to console
Query q = em.createQuery("select u from TAgency u");
List<TAgency> agencyList = q.getResultList();
for (TAgency agency : agencyList) {
System.out.println("NAme: " + agency.gettUser().getName());
}
}
public TAgency gettEventType() {
return tEventType;
}
public void settEventType(TAgency tEventType) {
this.tEventType = tEventType;
}
}
TUser是我要从中获取名称的另一个实体。 我有公共的getName()方法。
问题在这里:
<c:forEach items="${agencyBean.listAgencies()}" ... >
它应该为listAgencies
属性寻找一个getter方法,但是它是一个将要执行的void
方法,没有访问权限。
最好的选择是:
List<TAgency> listAgencies
。 listAgencies
属性定义正确的getter和setter方法。 永远不要在托管bean的getter中定义业务逻辑。 相关: 为什么JSF多次调用getters @RequestScope
以在每次用户访问该视图时加载此列表。 相关: 如何选择正确的bean作用域? @PostConstruct
方法加载列表。 根据这些建议,代码如下所示:
@ManagedBean(name = "agencyBean")
@RequestScoped
public class AgencyBean {
private TAgency tEventType = new TAgency();
private List<TAgency> listAgencies;
@PostConstruct
public void init() {
EntityManager em = HibernateUtil.getEntityManager();
// read the existing entries and write to console
Query q = em.createQuery("select u from TAgency u");
List<TAgency> agencyList = q.getResultList();
for (TAgency agency : agencyList) {
System.out.println("NAme: " + agency.gettUser().getName());
}
}
public TAgency gettEventType() {
return tEventType;
}
public void settEventType(TAgency tEventType) {
this.tEventType = tEventType;
}
public List<TAgency> getListAgencies() {
return listAgencies;
}
public void setListAgencies(List<TAgency> listAgencies) {
this.listAgencies = listAgencies;
}
}
和您的JSF代码:
<!-- Note: no parenthesis usage -->
<c:forEach items="#{agencyBean.listAgencies}" var="inputBoxes">
<!-- no need to call the getter verbosely, Expression Language call it for you automatically -->
<h:outputText value="#{inputBoxes.user.name}" />
<!-- what you want to do here? -->
<h:inputText />
</c:forEach>
另外,可能您不想使用<c:forEach>
而是使用<ui:repeat>
。 相关: JSF2 Facelets中的JSTL ...有意义吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.