我有一個Controller bean(SearchController),它有兩個託管bean作爲託管屬性(SearchCriteria,SearchResults;它們都是會話作用域)。JSF - 更新控制器Bean中的模型值
當用戶點擊查找按鈕時,執行的操作方法位於SearchController中。
SearchCreteria託管bean有一個名爲search()的方法。此方法返回一個新的SearchResults對象。在控制器bean中,我將searchResults託管屬性設置爲這個新的SearchResults對象。 searchResults對象包含我在該請求期間所期望的內容,但該對象不會保留在託管bean中。
據我所知,我正在改變searchResults引用的對象,但我不明白的是爲什麼JSF沒有更新模型來使用新對象。任何想法,我失蹤或不明白?我在WebSphere 6.1上使用JSF 1.1。
如果我把SearchResults託管bean的搜索方法,它的工作原理。
註釋掉的SearchController.find()中的行是當前工作的行。
public class SearchController {
SearchCriteria searchCriteria;
SearchResults searchResults;
ResultsBacking resultsBacking;
public String find()
{
setSearchResults(searchCriteria.search());
// searchResults.findSearchResults(searchCriteria);
if (!searchResults.resultsFound())
{
return "noresults";
}
return "success";
}
public class SearchCriteria {
public SearchResults search()
{
SearchDAO sdao = new SearchDAO();
ArrayList<Group> list = (ArrayList<Group>)sdao.findGroups(this);
SearchResults searchResults = new SearchResults();
searchResults.setSearchResults(list);
return searchResults;
}
}
public class SearchResults {
List<Group> searchResults;
public void findSearchResults(SearchCriteria criteria)
{
SearchDAO sdao = new SearchDAO();
this.setSearchResults(sdao.findGroups(criteria));
}
}
這真的很難,幫助沒有看到有問題的代碼... – kgrad 2010-05-26 14:32:07
我同意,這是很難想象的問題,而一些片段。檢查我的答案,我發佈了一個示例代碼片段。看看是否屬實。 – BalusC 2010-05-26 14:47:59