Bal*_*usC 76
该<f:view>只如果要明确指定有用/覆盖任何可用的属性如locale,encoding,contentType,等还是要附加一些阶段监听器.例如
<f:view locale="#{user.locale}" encoding="UTF-8" contentType="text/html">
Run Code Online (Sandbox Code Playgroud)
如果不指定,那么理智JSF默认只会被用来代替,这分别是UIViewRoot#getLocale(),UTF-8与最接近的匹配Accept请求头.需要注意的是,Accept请求标头的最接近匹配并不总是完全正确.有时它会导致application/xhtml+xml因为.xhtmlFacelets中存在扩展名而且Web浏览器没有被配置为text/html默认将其解释为(如MSIE).您真的希望通过明确设置它来避免这种错误的内容类型text/html.
请注意,将其放在模板中的位置无关紧要.你甚至可以把它放在模板客户端作为直接的孩子<ui:define>.然而,规范的地方是直接的孩子,<html>因此包裹着<h:head>和<h:body>.这也是它在遗留JSP中实际需要的方式.在Facelets中,它是可选的并且被视为元数据.
该<f:subview>会创建另一个命名容器上下文.当您想要在同一视图根中重复使用包含多个固定组件ID的包含文件时,这尤其有用,否则您将获得重复的组件ID错误.但是,由于JSF 2.0这样的包含文件可以更好地成为一个复合组件,它本身已经是一个命名容器.
如果您没有指定它,那么如果您不在视图中多次重复使用具有相同ID的组件,则不会造成损害.
| 归档时间: |
|
| 查看次数: |
50513 次 |
| 最近记录: |