我有一個問題,我調用了支持bean中的一個方法,該方法應該更新一個列表,然後在我的xhtml頁面上重新顯示rich:datagrid以反映更改.Via調試我可以確認該方法被成功調用,但是它在一次遍歷列表後跳出方法並轉到另一個類(不是我的類之一)。它永遠不會返回到該方法,並且datagrid也是從未重投。在支持bean中執行方法時跳轉到未知類的代碼
下面是相關的html和java代碼。 HTML:
<table width="650px">
<tbody>
<tr>
<td width="325px" align="left"><h:outputText style="white-space: pre; font-weight: normal; font-family: Tahoma; font-size: 11px">Name :</h:outputText>
<h:inputText id="searchName" size="25" value="#{myBean.searchName}"></h:inputText></td>
<td width="325px" align="left"><h:outputText style="white-space: pre; font-weight: normal; font-family: Tahoma; font-size: 11px">Surname :</h:outputText>
<h:inputText id="searchSurname" size="25" value="#{myBean.searchSurname}"></h:inputText></td>
</tr>
<tr>
<td width="325px" align="left"><h:outputText style="white-space: pre; font-weight: normal; font-family: Tahoma; font-size: 11px">ID :</h:outputText>
<h:inputText id="searchId" size="25" value="#{myBean.searchId}"></h:inputText></td>
<td width="325px" align="left"><h:outputText style="white-space: pre; font-weight: normal; font-family: Tahoma; font-size: 11px">Status :</h:outputText>
<h:inputText id="searchStatus" size="25" value="#{myBean.searchStatus}"></h:inputText></td>
</tr>
<tr>
<td align="right"><a4j:commandButton action="#{myBean.searchRecords}" value="Search" render="dataList"></a4j:commandButton></td>
</tr>
</tbody>
</table>
的Java:
public void searchRecords(){
if(dataList == null){
dataList = searchList;
}
searchList = Collections.<ListObj>emptyList();
for (ListObj obj : dataList) {
if((obj.getName().contains(searchName)) | (obj.getSurname().contains(searchSurname)) | (obj.getIdNumber().contains(searchId)) | (obj.getStatus().equalsIgnoreCase(searchStatus))){
searchList.add(obj);
}
}
}
的代碼會跳轉到。我正在使用Apache MyFaces的JSF 2.1,RichFace 4.3和Java 1.6上searchList.add的未知類(OBJ)。我認爲這可能與JSF生命週期有關,因爲我對生命週期的理解是嚴重缺乏的,但出於同樣的原因,我可能會錯誤的。我正在閱讀BalusC關於生命週期的文章。
你能告訴我們你的調試器顯示執行的未知類和方法的名稱是什麼? – Apurv 2013-04-22 08:56:20