2010-12-01 37 views
1

我想實現創紀錄的詳細信息頁面,用戶可以調用使用URL,如:最好的方法檢查是否存在記錄編輯器中的形式

http://somewhere.foo/detail.jsf?recordId=1 

現在,如果使用指定的identfier可以記錄被發現時,應該顯示實際的編輯頁面,如果找不到,應該顯示錯誤頁面。

使用JSF 2.0和Facelets實現這種行爲的最佳方式是什麼?

我想到了這樣的事情(在僞代碼):

detail.xhtml

<if #{!recordBean.recordFound}> 
    <ui:include detailNotFound.xhtml> 
    <else> 
    ... show regular edit form here ... 
    <endif> 

是更好或 「比較認可」 這樣做的方法?

回答

1

使用rendered attribtue爲此。假設#{recordBean.list}返回List,這裏有一個例子:

<h:panelGroup rendered="#{empty recordBean.list}"> 
    <ui:include src="detailNotFound.xhtml" /> 
</h:panelGroup> 
<h:panelGroup rendered="#{not empty recordBean.list}"> 
    ... 
</h:panelGroup> 

或者,如果它都包括頁面,那麼你也可以使用條件運算?:直在ui:include源:

<ui:include src="#{empty recordBean.list ? 'detailNotFound.xhtml' : 'showDetails.xhtml'}" /> 

對於您感興趣的情況下,這裏是rendered屬性中可能的布爾條件的更多示例:

<h:someComponent rendered="#{bean.booleanValue}" /> 
<h:someComponent rendered="#{bean.intValue > 10}" /> 
<h:someComponent rendered="#{bean.objectValue == null}" /> 
<h:someComponent rendered="#{bean.stringValue != 'someValue'}" /> 
<h:someComponent rendered="#{!empty bean.collectionValue}" /> 
<h:someComponent rendered="#{!bean.booleanValue and bean.intValue != 0}" /> 
<h:someComponent rendered="#{bean.enumValue == 'ONE' or bean.enumValue == 'TWO'}" /> 
1

您可以在同一頁面上同時出現錯誤消息和記錄編輯器。在沒有記錄時使用呈現的屬性並呈現錯誤消息,並在有記錄時顯示編輯器

相關問題