最好的方法检查是否存在记录编辑器中的形式
问题描述:
我想实现创纪录的详细信息页面,用户可以调用使用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>
是更好或 “比较认可” 这样做的方法?
答
使用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'}" />
答
您可以在同一页面上同时出现错误消息和记录编辑器。在没有记录时使用呈现的属性并呈现错误消息,并在有记录时显示编辑器