Öme*_*alı 1 datatable jsf primefaces jsf-2 uirepeat
JSF 2.0的ui:repeat标签获取java bean(arraylist)的值,因为它是value属性但size属性没有.我在数据表中使用ui repeat,迭代显示状态,ui repeat显示每个状态的注释.我从java类中给出了ui repeat的size属性,因为每个状态都有不同数量的注释.因此,应该动态决定大小.以下是我所做的总结.型号类:
@ManagedBean
@RequestScoped
public class Comment {
private String commentAuthorName;
//getter and setter
}
Run Code Online (Sandbox Code Playgroud)
这表示Status类,其中包含注释列表:
@ManagedBean
@RequestScoped
public class Status {
private ArrayList<Comment> commentList;
private int numOfComments;
//getter and setter
}
Run Code Online (Sandbox Code Playgroud)
这是关于StatusBean类的一个想法:
@ManagedBean
@SessionScoped
public class StatusBean {
List<Status> panelList = new ArrayList<Status>();
List<Comment> commentList = new ArrayList<Comment>();
public static void process() {
panelList = StatusService.getPersonalStatus(log.getLoggeduser());//means fill list
commentList = StatusService.getPersonalComments(panelList);//gets comments via related statuses
for (int i=0; i<panelList.size(); i++) { //for each status
Status status = panelList.get(i);
for(Comment comment : commentList) { //for each comment of each status
status.setNumOfCommentsShown(1);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且查看图层如下所示.Ui重复包含在PrimeFaces DataTable中,以便能够显示每个状态的每个评论.我正在使用数据表,因为它有实时滚动,它必须迭代显示所有状态,ui repeat最好显示每个状态的每个注释.
<p:dataTable liveScroll="true" value="#{StatusBean.panelList}"
var="Status" scrollable="true">
<ui:repeat var="Comment" value="#{Status.commentList}"
size="#{Status.numOfComments}"></ui:repeat>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
调试结果显示#{Status.numOfComments}正确填充了预期的整数,但仍然无法正常工作.但是如果我手动编写size = 3,它会给出预期的结果.
据我所知,到目前为止还没有答案,所以我会回答你的问题并给你一些关于我在堆栈中肯定会有什么变化的想法.
我编写了一个类似于你的代码,关于托管bean属性指定的<ui:repeat>with size属性的用法,它也不适用于我.无论我多么努力地设置EL的属性值,它都没有用.而且,它对最简单的EL也不起作用#{5}.我不知道问题出在哪里,但我认为这里的经验会启发我们为什么会这样,你呢?
可能这是JSF <ui:repeat>组件的一个小故障,然后我们将引发一个关于它的问题.如果它是一个功能,那么完全理解它会很好.
关于上面的代码,有许多简单的解决方法.如果您坚持使用该<ui:repeat>组件,我将为您提供基本的工作示例.您的视图层由JSF托管bean和两个模型类支持.我的解决方案使用<ui:param>和<ui:fragment>.开始了.
风景:
<p:dataTable value="#{statusBean.statusesList}" var="status">
<p:column headerText="Status name">
<h:outputText value="#{status.statusName}"/>
</p:column>
<p:column headerText="Status comments">
<ul>
<ui:param name="max" value="#{status.numOfComments}"/>
<ui:repeat var="comment" value="#{status.commentList}" varStatus="statusVar">
<ui:fragment rendered="#{statusVar.index lt max}">
<li>
<h:outputText value="Author: #{comment.authorName}; comment: #{comment.description}"/>
</li>
</ui:fragment>
</ui:repeat>
</ul>
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
该模型:
public class Comment {
private String authorName;
private String description;
}
Run Code Online (Sandbox Code Playgroud)
同
public class Status {
private List<Comment> commentList;
private int numOfComments;
private String statusName;
}
Run Code Online (Sandbox Code Playgroud)
托管bean:
@ManagedBean
@RequestScoped
public class StatusBean {
private List<Status> statusesList;
public StatusBean() {
Status status;
List<Status> statusesList = new ArrayList<Status>();
Comment comment;
List<Comment> commentList;
for(int s = 0; s < 10; s++) {
commentList = new ArrayList<Comment>();
for(int c = 0; c < 20; c++) {
commentList.add(new Comment("User " + (s + 1) + "-" + (c + 1), "Description for comment " + (s + 1) + "-" + (c + 1)));
}
statusesList.add(new Status(commentList, (s + 1), "Status " + (s + 1)));
}
this.statusesList = statusesList;
}
}
Run Code Online (Sandbox Code Playgroud)
在代码工作之后,我想说明一些改进.
@ManagedBean和@...Scoped注释,然后使它们成为(分离的)@Entity类,由服务bean提供;Status对象中;preRenderView侦听器(Servlet 2.5)或@PostConstruct方法中加载nesessary数据.做一个很好的bean范围选择.咨询BalusC的优秀概述将是一个很好的起点;size="...";托管bean的示例启动示例如下:
@ManagedBean
@RequestScoped
public class StatusBean {
private List<Status> statusesList;
@EJB
private StatusService statusService;
@ManagedProperty(value="#{user}")
private User user;
@PostConstruct
public void init() {
statusesList = statusService.getStatuses(user);
}
public List<Status> getStatusesList() {
return statusesList;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4018 次 |
| 最近记录: |