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 2 如何在JSF2.0的panelGrid中填充arraylist?_Jsf 2_Arraylist_Populate_Uirepeat - Fatal编程技术网

Jsf 2 如何在JSF2.0的panelGrid中填充arraylist?

Jsf 2 如何在JSF2.0的panelGrid中填充arraylist?,jsf-2,arraylist,populate,uirepeat,Jsf 2,Arraylist,Populate,Uirepeat,在从arraylist填充数据时,jsf panelgrid中有一个问题。。我得到的错误是javax.el.PropertyNotFoundException:/facelet/crew/searchCrew.xhtml@14,95 value=“#{searchCrewBean.searchCrewParam.staffNum}”:目标不可访问,“searchCrewParam”返回空值 @ManagedBean(name="searchCrewBean") public class Sear

在从arraylist填充数据时,jsf panelgrid中有一个问题。。我得到的错误是
javax.el.PropertyNotFoundException:/facelet/crew/searchCrew.xhtml@14,95 value=“#{searchCrewBean.searchCrewParam.staffNum}”:目标不可访问,“searchCrewParam”返回空值

@ManagedBean(name="searchCrewBean")
public class SearchCrewBean {

private SearchCrew searchCrewParam;
}


public class SearchCrew {

private String staffNum;

private String surName;

private String rank;
//getters and setters goes here..
}
请在下面找到我的代码,请帮助我

@ManagedBean(name="searchCrewBean")
public class SearchCrewBean {

private SearchCrew searchCrewParam;
}


public class SearchCrew {

private String staffNum;

private String surName;

private String rank;
//getters and setters goes here..
}
JSF代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">
<h:body>
    <ui:composition template="/facelet/layout/mainlayout.xhtml">
    <ui:define name="content">
        <h:form>
            <h:panelGrid columns="7" border="2" title="Crew information"
                rendered="true">
                <f:facet name="header">
                    <h:panelGroup border="2">
                        <h:inputText value="Staffnum" size="6" />
                        <h:inputText value="Surname" size="10" maxlength="25" />
                        <h:inputText value="Age" size="2" />
                        <h:inputText value="Rank" size="3" />
                        <h:inputText value="Type" size="1" />
                        <h:inputText value="Scexpiry" size="10" />
                        <h:inputText value="Mailboxno" size="4" />
                    </h:panelGroup>
                <ui:repeat var="o" value="#{searchCrewBean.listOfSearchCrew}">
                    <h:panelGroup rendered="true">
                        <h:inputText id="staffnum" value="o.staffNum" size="6" />
                        <h:inputText id="surname" value="o.surName" size="10"
                            maxlength="25" />
                        <h:inputText id="age" value="o.age" size="2" />
                        <h:inputText id="rank" value="o.rank" size="3" />
                        <h:inputText id="type" value="o.type" size="1" />
                        <h:inputText id="scexpiry" value="o.scExpiry" size="10" />
                        <h:inputText id="mailboxno" value="o.mailBoxNo" size="4" />
                    </h:panelGroup>
                </ui:repeat>

            </h:panelGrid>
        </h:form>
    </ui:define>
</ui:composition>
</h:body>
</html>
@ManagedBean(name="searchCrewBean")
public class SearchCrewBean {

private SearchCrew searchCrewParam;
}


public class SearchCrew {

private String staffNum;

private String surName;

private String rank;
//getters and setters goes here..
}
@阿克塞尔威格特 我正在加载船员名单如下 private ArrayList of Crew; 私人ArrayList of SearchCrew

public void loadCrew()
{
    listOfCrew = new ArrayList<Crew>();
    listOfCrew.add(new Crew("000212", "HATHELY", 70, "CPT",'T',"13.03.2013",Long.parseLong("1012")));
    listOfCrew.add(new Crew("000213", "MIKE", 52, "F/O",'T',"14.03.2013",Long.parseLong("1013")));
    listOfCrew.add(new Crew("000214", "JOHN", 45, "S/O",'T',"15.03.2013",Long.parseLong("1014")));
    listOfCrew.add(new Crew("000215", "NOTE", 35, "CPT",'T',"16.03.2013",Long.parseLong("1015")));
    listOfCrew.add(new Crew("000216", "KARTHIK", 27, "CPT",'T',"17.03.2013",Long.parseLong("1016")));
    listOfCrew.add(new Crew("000217", "JESSIE", 30, "PUR",'C',"18.02.2013",Long.parseLong("1017")));
    listOfCrew.add(new Crew("000218", "LISSA", 29, "F/A",'C',"19.02.2013",Long.parseLong("1018")));
    listOfCrew.add(new Crew("000219", "MARKUS", 40, "CPT",'T',"13.03.2013",Long.parseLong("1019")));
    listOfCrew.add(new Crew("000220", "JONTHAN", 46, "F/O",'T',"13.03.2013",Long.parseLong("1020")));
    listOfCrew.add(new Crew("000221", "BATMAN", 33, "S/O",'T',"13.03.2013",Long.parseLong("1021")));

}
@ManagedBean(name="searchCrewBean")
public class SearchCrewBean {

private SearchCrew searchCrewParam;
}


public class SearchCrew {

private String staffNum;

private String surName;

private String rank;
//getters and setters goes here..
}

因此,如果在同一类中有
loadCrew
方法,请尝试以下操作

@ManagedBean(name="searchCrewBean")
public class SearchCrewBean {

private SearchCrew searchCrewParam;
}


public class SearchCrew {

private String staffNum;

private String surName;

private String rank;
//getters and setters goes here..
}
public ArrayList<Crew> getListOfSearchCrew() {
  if( listOfSearchCrew == null ) {
     loadCrew() ;
   }
   return listOfSearchCrew;
}
public ArrayList getListOfSearchCrew(){
如果(listOfSearchCrew==null){
装载机组();
}
返回搜索人员名单;
}

我在这里犯了一个错误, 在backingbean中,我忘了实例化search-crew参数,如下所示
@ManagedBean(name=“searchCrewBean”)
公共类SearchCrewBean{
private SearchCrew searchCrewParam;//旧行
private SearchCrew searchCrewParam=新建SearchCrew();//换行符
}

@ManagedBean(name="searchCrewBean")
public class SearchCrewBean {

private SearchCrew searchCrewParam;
}


public class SearchCrew {

private String staffNum;

private String surName;

private String rank;
//getters and setters goes here..
}
对于在jsf页面中显示arraylist,我使用了jsf中的
h:dataTable
标记,这很有帮助。
请参阅您的列表是否为空?或者在哪里初始化它?在哪里调用此方法?在哪里调用
loadCrew()
method?Ooops我无法在我以为从ctor调用过的任何地方调用此方法,但不是:-(在调用此方法并在此发布后,让我尝试一下这是我的第一个jsf,它映射了搜索参数。
只需在getListOfSearchCrew()中放置一个日志)确保是否调用它。必须调用它。你在哪里调用了加载方法?当commandButton的操作触发时我正在调用。如下所示。首先加载crewlist,然后调用用于搜索findcrew的方法。
public String search(){if(listOfCrew==null){loadCrew();}listOfSearchCrew=findCrew();if(listOfSearchCrew.size()>0){返回“成功”}否则返回“失败”}
@ManagedBean(name="searchCrewBean")
public class SearchCrewBean {

private SearchCrew searchCrewParam;
}


public class SearchCrew {

private String staffNum;

private String surName;

private String rank;
//getters and setters goes here..
}