2009-04-11 11 views
0

我有一個頁面「start.jsf」,它指向一個動作#{ruler.start},這個動作將請求轉發到「flow.jsf」。JSF 1.1:關於生命週期的問題,爲什麼渲染屬性會影響下面的託管bean操作?

託管bean「標尺」(請求範圍)包含一些屬性,其中一個名爲「ruler.operation」,正確填充到「start.jsf」中。

頁面「flow.jsf」有一個命令按鈕指向的另一個稱爲「鏈表類」託管bean含有名爲「objectList.selectedContractor」(初始化爲構造一個POJO的屬性對象(會話範圍),所以它的子屬性總是空的,只能在第一次調用時調用,或者錯誤?),其動作是#{objectList.itemInsert}。

「flow.jsf」 的表單頁面包含以下標籤:

<h:form> 
<h:inputText id="crnameNew" value="#{objectList.selectedContractor.crname}" rendered="#{ruler.operation eq ruler.codeOperationNew}" /> 

<h:inputText id="someProp" value="#{objectList.someProp}" /> 
<h:commandButton styleClass="importedButton" value="insert" action="#{objectList.itemInsert}" /> 
</h:form> 

那麼,當我提交操作#{} objectList.itemInsert,只有 「someProp」 正確地填充到MB,而「selectedContractor.crname」結果爲空。

但如果我切換從標籤綁定#{} objectList.selectedContractor.crname的「渲染」的屬性,它的工作原理並調用#{} objectList.itemInsert時正確填寫...所以爲什麼「渲染」影響提交的處理?

回答

1

該屬性表明它隻影響渲染。如果它在頁面上呈現,那麼該值將在表單提交中發送回Bean。如果它正在渲染,並且沒有發生,那麼其他事情就是錯誤的。

+0

事實上,我注意到由乾淨頁面進行的簡單測試與預期完全相同,請求範圍受管Bean不會影響呈現屬性。此外,上面的表單與include中的子視圖相關聯,我會嘗試清理一些代碼。 – 2009-04-12 14:34:48