Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf ui:重复大小不为';t获取javabean值_Jsf_Jsf 2_Primefaces_Datatable_Uirepeat - Fatal编程技术网

Jsf ui:重复大小不为';t获取javabean值

Jsf ui:重复大小不为';t获取javabean值,jsf,jsf-2,primefaces,datatable,uirepeat,Jsf,Jsf 2,Primefaces,Datatable,Uirepeat,JSF2.0的ui:repeat标记获取JavaBean(arraylist)的值作为其值属性,但size属性没有。我在一个datatable中使用ui repeat,它迭代显示状态,ui repeat显示每个状态的注释。我给出了java类中ui repeat的size属性,因为每个状态都有不同数量的注释。因此,应动态确定尺寸。这是我所做工作的总结。模型类: @ManagedBean @RequestScoped public class Comment { private Strin

JSF2.0的ui:repeat标记获取JavaBean(arraylist)的值作为其值属性,但size属性没有。我在一个datatable中使用ui repeat,它迭代显示状态,ui repeat显示每个状态的注释。我给出了java类中ui repeat的size属性,因为每个状态都有不同数量的注释。因此,应动态确定尺寸。这是我所做工作的总结。模型类:

@ManagedBean
@RequestScoped
public class Comment {
     private String commentAuthorName;
//getter and setter
}
这表示具有注释列表的状态类:

@ManagedBean
@RequestScoped
public class Status {
    private ArrayList<Comment> commentList;
    private int numOfComments;
//getter and setter
}
@ManagedBean
@请求范围
公共阶级地位{
私有ArrayList注释列表;
私人评论;
//接二连三
}
这是关于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);
           }
        }
    }
}
@ManagedBean
@会议范围
公共类StatusBean{
List panelList=new ArrayList();
List commentList=新的ArrayList();
公共静态无效进程(){
panelList=StatusService.getPersonalStatus(log.getLoggeduser());//表示填充列表
commentList=StatusService.getPersonalComments(panelList);//通过相关状态获取注释

对于(inti=0;i,据我所知,到今天为止还没有答案,所以我将回答您的问题,并给您一些关于我肯定会在您的堆栈中更改什么的想法

分析你的问题 我已经编写了一个类似于您的代码,关于使用托管bean属性指定的
大小
属性来使用
,它对我也不起作用。无论我多么努力地用EL设置属性的值,它都不起作用。此外,对于最简单的EL,它也不起作用,比如
{5}
也是。我不知道问题是从哪里来的,但我认为这里的经验会告诉我们为什么会发生这种情况,好吗

很可能这是JSF
组件的一个小故障,那么我们将提出一个与之相关的问题。如果这是一个特性,那么最好完全理解它

据我所知,这是一个代码的工作示例 关于上面的代码,有许多简单的解决方法。如果您坚持使用
组件,我将为您提供基本的工作示例。您的视图层由一个JSF托管bean和两个模型类支持。我的解决方案使用
。现在开始

观点:

<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>


据我所知,直到今天还没有答案,所以我会回答你的问题,并给你一些想法,我肯定会改变你的堆栈

分析你的问题 我已经编写了一个类似于您的代码,关于使用托管bean属性指定的
大小
属性来使用
,它对我也不起作用。无论我多么努力地用EL设置属性的值,它都不起作用。此外,对于最简单的EL,它也不起作用,比如
{5}
也是。我不知道问题是从哪里来的,但我认为这里的经验会告诉我们为什么会发生这种情况,好吗

很可能这是JSF
组件的一个小故障,那么我们将提出一个与之相关的问题。如果这是一个特性,那么最好完全理解它

据我所知,这是一个代码的工作示例 关于上面的代码,有许多简单的解决方法。如果您坚持使用
组件,我将为您提供基本的工作示例。您的视图层由一个JSF托管bean和两个模型类支持。我的解决方案使用
。现在开始

观点:

<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>


如果您想获得具体帮助,请发布您的代码的sscce,否则没有人能够或想要回答您的问题。作为补充说明,您的代码显示了对Java命名约定的一些不尊重,这可能会使一些读者拒绝回答。感谢您对学员的有用评论。我更新了我的问题,因为您r建议顺便说一句,我今天感觉不太好,为错误感到抱歉。我不理解您希望通过
内部
实现什么。您还有其他PrimeFaces组件可以帮助您喜欢和。我的意思是,每个状态元素都已经包含注释列表,并且它们是实体类或DTO,而不是托管bean(具有请求作用域)。其次,会话范围bean的静态方法是一个非常糟糕的主意。最好是在构造后方法或页面操作方法中填充值。此外,第二个列表的迭代是多余的,因为在comment对象上没有方法调用。请查看答案并享受JSF的“隐藏”功能!如果您想获得concrete help请发布您的代码的sscce,否则没有人能够或想要回答您的问题。顺便说一句,您的代码显示了对Java命名约定的一些不尊重,这可能会使一些读者拒绝回答。感谢您对学员的有用评论。由于您的建议,我更新了我的问题。顺便说一句,我不知道今天感觉很好,为错误感到抱歉。我不理解您希望通过
内部的
实现什么。您还有其他PrimeFaces组件可以帮助您喜欢和。我的意思是每个状态元素已经包含注释列表,它们是实体类或DTO,而不是托管bean(具有请求作用域)。接下来,会话范围bean的静态方法是一个非常糟糕的主意。最好是在构造后方法或页面操作方法中填充值。此外,第二个列表的迭代是多余的,因为在注释对象上没有方法调用。看看答案,享受JSF的“隐藏”功能!哇!这一定是最好的这个问题可以回答!!!我只是执行了你的代码并按照我想要的方式工作。当然,我会试着考虑你的戒律。
public class Comment {

    private String authorName;
    private String description;

}
public class Status {

    private List<Comment> commentList;
    private int numOfComments;
    private String statusName;

}
@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;
    }

}
@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;
    }

}