[英]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.