我有一个用户列表,我想用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