2010-12-01 41 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

您可以在同一页面上同时出现错误消息和记录编辑器。在没有记录时使用呈现的属性并呈现错误消息,并在有记录时显示编辑器

相关问题