我有一個用戶列表,我想用JSF頁面顯示使用基線p:datatable
。我沒有例外,但我不能顯示列表中的數據,即使列標題沒有顯示,實際上,我使用'getUserListe()'
方法從數據庫中調用我的服務層的數據爲當然,我添加了一些userDomain
屬性(我的模型類)的sysprint(),當我訪問URL時,我想用UserListe中的數據填充我的數據表,因此我通過value="#{userMB.userListe}"
來調用它,問題是該列表不顯示。但是當頁面被收費時,意味着getUserListe()被調用,在我的控制檯中,proprities被打印成功,有人對此有任何想法? :Primefaces- JSF,列表中的數據不能顯示在p:datatabe
我的託管bean的一部分:我jsf.xhtml文件
@ManagedBean(name="userMB")
@RequestScoped
public class UserManagedBean implements Serializable {
private List<UserDomain> userListe ;
public List<UserDomain> getUserListe() {
this.userListe = new ArrayList<UserDomain>();
this.userListe.addAll(getUserServicee().getAll());
for(UserDomain u : userListe)
System.out.println(u.getFirstName());
return userListe;
}
public void setUserListe(List<UserDomain> userListe) {
this.userListe = userListe;
}
部分:
<h:form>
<h:outputText value="USER's rights list: "></h:outputText>
<p:dataTable id="userss" var="userr" value="#{userMB.userListe}" style="width: 10%">
<h:column>
<f:facet name="header"><h:outputText value="FirstName" /></f:facet>
<h:outputText value="#{userr.firstName}" />
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="LastName" /></f:facet>
<h:outputText value="#{userr.lastName}" />
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="Action" /></f:facet>
<h:commandLink value="Edit" action="#{userMB.editAction(userr)}" />
</h:column>
</p:dataTable>
<h:commandButton value="OK" action="#{userMB.userProp}" />
</h:form>
請注意,我的用戶擁有所有的getter和他的財產的制定者正確地設置好的, 感謝您的幫助
''和'工作'將其更改爲''。使你的bean @ViewScoped並將你的'getUserListe'的業務邏輯移動到另一個方法,讀取[在jsf頁面和託管bean之間,爲什麼getter方法被調用兩次](http://stackoverflow.com/a/2788213/1065197) –
2012-08-01 14:40:28
Luiggi說得沒錯,使用ap:column會解決它,你應該加載一次數據,而不是每次請求值。 – 2012-08-01 15:18:59
謝謝@LuiggiMendoza爲你的答案,你是對的,而Daniel,我怎麼才能加載數據只有一次,是由「onload」屬性還是什麼?非常感謝您的幫助。 – maouven 2012-08-01 15:56:36