У меня есть проблема, когда я вызываю метод в вспомогательном компоненте, который должен обновить список, после чего Rich: datagrid перерисовывается на моей странице xhtml, чтобы отразить изменения. С помощью отладки я могу подтвердить, что метод вызывается успешно, однако он выпрыгивает из метода после одной итерации по списку и переходит к другому классу (не к одному из моих классов). Он никогда не возвращается к методу, и сетка данных также никогда не перерисовывается.
Ниже приведен соответствующий код 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>
Ява:
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);
}
}
}
Код переходит к неизвестному классу в searchList.add(obj). Я использую Apache MyFaces JSF 2.1, RichFace 4.3 и Java 1.6. Я думаю, что это может быть как-то связано с жизненным циклом JSF, поскольку мое понимание жизненного цикла сильно отсутствует, но я могу ошибаться по той же причине. Я сейчас читаю сообщение BalusC о жизненном цикле.