Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Java 如何用新数据替换arraylist中的现有元素_Java_Jsf_Primefaces - Fatal编程技术网

Java 如何用新数据替换arraylist中的现有元素

Java 如何用新数据替换arraylist中的现有元素,java,jsf,primefaces,Java,Jsf,Primefaces,我必须在JSF Primefaces Java中获得一个数据表,其中填充了来自db的数据,如果没有足够的数据,我必须用空的或新的对象/行填充它 为了稍微澄清一下,datatable中的每一行表示当前月份的一天。数据库中已经存在的数据是当月每个日期的数据 如果我只有6月2日的数据。我需要在每月的第一天在我的datatable中有一个新的空对象,第二天必须有来自db的数据 所以我尝试过这样做,但是我的结果是来自db的数据来自datatable stackt,位于datatable之上。从那以后,它又

我必须在JSF Primefaces Java中获得一个数据表,其中填充了来自db的数据,如果没有足够的数据,我必须用空的或新的对象/行填充它

为了稍微澄清一下,datatable中的每一行表示当前月份的一天。数据库中已经存在的数据是当月每个日期的数据

如果我只有6月2日的数据。我需要在每月的第一天在我的datatable中有一个新的空对象,第二天必须有来自db的数据

所以我尝试过这样做,但是我的结果是来自db的数据来自datatable stackt,位于datatable之上。从那以后,它又从月初开始

所以我想在一个月的某一天设置数据库数据

这是我的密码:

 LocalDate date = LocalDate.now().withDayOfMonth(1);
        dayDataList = dayDataTaskService.findAllDataForUser("Wim",Date.valueOf(date));
        LocalDate end = date.plusMonths(1);

        if (dayDataList == null || dayDataList.isEmpty()) {
            List<DayData> dayDataList = new ArrayList<>();
            while (date.isBefore(end)) {
                DayData dat = new DayData();
                dat.setRamDate(Date.valueOf(date));
                dayDataList.add(dat);

                date = date.plusDays(1);

            }


        } else {
            while (date.isBefore(end)) {
                int day = date.getDayOfMonth();
                if(dayDataList.contains(Date.valueOf(date)))
                {
                    for(DayData d : dayDataList)
                    {

                        if(d.getRamDate().equals(Date.valueOf(date)))
                        {
                            System.out.println(date + "-" + d.getRamDate());
                            dayDataList.set(5,d);

                            date.plusDays(1);
                        }
                    }

                }else{


                            dayDataList.add(new DayData(Date.valueOf(date)));
                            date = date.plusDays(1);


                }
LocalDate-date=LocalDate.now().withDayOfMonth(1);
dayDataList=dayDataTaskService.findAllDataForUser(“Wim”,Date.valueOf(Date));
LocalDate end=date.plusMonths(1);
if(dayDataList==null | | dayDataList.isEmpty()){
List dayDataList=new ArrayList();
while(date.isBefore(end)){
DayData dat=新的DayData();
日期setRamDate(日期valueOf(日期));
dayDataList.add(dat);
日期=日期加星期四(1);
}
}否则{
while(date.isBefore(end)){
int day=date.getDayOfMonth();
if(dayDataList.contains(Date.valueOf(Date)))
{
对于(daydatad:dayDataList)
{
如果(d.getRamDate().equals(Date.valueOf(Date)))
{
System.out.println(date+“-”+d.getRamDate());
dayDataList.set(5,d);
日期:星期四(1);
}
}
}否则{
dayDataList.add(新的DayData(Date.valueOf(Date)));
日期=日期加星期四(1);
}
我的结果是:


因此,您可以看到第一条记录是本月的第一条记录,是数据库中的数据。第二条记录也是本月的第一条记录,没有数据。因此,我需要将datatable中的行替换为datatable中特定日期数据库中的行。

尝试编写unitest。这听起来像是纯粹的“服务问题”()您需要正确地填充模型,而不是JSF/PrimeFaces。尝试这样做,如果需要,在控制台上打印出来。如果这样做有效,您就有了PrimeFaces(JSF)模型同样),但如果我似乎误解了,你必须更好地解释。@Kukeltje感谢你的评论。简而言之,它将数据库中现有的数据添加到列表中,当每天没有足够的数据时,将新对象添加到列表中,以填充到月底。我理解了这部分内容,但不清楚问题是什么……t数据库中的数据出现在数据表的顶部。比如说6月1日的数据来自数据库。之后的行必须是6月2日的默认行,没有来自数据库的数据。现在,正如您在我的打印屏幕中看到的,6月1日在数据表中出现了两次。好的,这部分现在是清楚的,但数据表只是'pr'ints“你给它提供了什么。因此,我说它更像是一个“服务”的东西,如果你在处理结束时将服务结果打印到stdout,你也会遇到同样的问题。因此它不是JSF或PrimeFaces的东西(或者h:datatable是否正确显示它?),顺便说一句,你的代码不完整;-)