2012-11-24 22 views
1

我在JSF panelGrid的一個問題,同時填充從ArrayList中的數據..我收到提示爲javax.el.PropertyNotFoundException: /facelet/crew/searchCrew.xhtml @14,95 value="#{searchCrewBean.searchCrewParam.staffNum}": Target Unreachable, 'searchCrewParam' returned null如何在JSF 2.0的panelGrid中填充arraylist?

請在下面找到我的代碼好心幫我..下面

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> 

我支持bean這裏...

@ManagedBean(name="searchCrewBean") 
public class SearchCrewBean { 
    private ArrayList<Crew> listOfSearchCrew ; 

     public ArrayList<Crew> getListOfSearchCrew() { 
     return listOfSearchCrew; 
    } 

    public void setListOfSearchCrew(ArrayList<Crew> listOfSearchCrew) { 
     this.listOfSearchCrew = listOfSearchCrew; 
} 

//business logic goes here to add listofcrew 
    } 

,在這裏我的船員類...

公共類船員{

private String staffNum; 

private String surName; 

private Integer age; 

private String rank; 

private Character type; 

private String scExpiry; 

private Long mailBoxNo; 
} 

@Akselwillgert 我加載船員名單如下 私人的ArrayList listOfCrew; private ArrayList listOfSearchCrew;

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.. 
} 
+1

您的列表爲空?或者你在哪裏啓動它? –

+1

你在哪裏調用這個方法? –

+1

你在哪裏調用'loadCrew()'方法? – vels4j

回答

0

我做了一個這裏的錯誤, 在支持bean我忘了實例搜索船員PARAM如下 @ManagedBean(name="searchCrewBean") public class SearchCrewBean { private SearchCrew searchCrewParam; // old line private SearchCrew searchCrewParam= new SearchCrew(); // newline }

和顯示在JSF頁面ArrayList中我使用了h:dataTable標籤從JSF是有幫助的。 參考http://www.mkyong.com/jsf2/jsf-2-datatable-example/

0

所以,如果你有在同一類的loadCrew方法,試試這個

public ArrayList<Crew> getListOfSearchCrew() { 
    if(listOfSearchCrew == null) { 
    loadCrew() ; 
    } 
    return listOfSearchCrew; 
} 
+0

不工作仍然:-(我已經更新問題再次 – nallskarthi

+0

只是把一個日誌getListOfSearchCrew(),以確保它是否被調用,它必須被調用。你在哪裏調用這個加載方法? – vels4j

+0

我在調用一個commandButton的動作時觸發..如下.. 第一裝載crewlist然後我打電話方法findcrew搜索.. '公共字符串搜索(){ \t \t如果(listOfCrew == NULL) \t \t { \t \t \t loadCrew(); \t \t} \t \t listOfSearchCrew = findCrew(); \t if(listOfSearchCrew.size()> 0) \t { \t \t return「success」; \t} \t else \t \t return「failure」; }' – nallskarthi