【发布时间】:2012-06-22 20:28:20
【问题描述】:
我可以使用 HttpServletRequest 从后端 bean 获取 jsf 中当前页面的 url。但是有没有办法获得当前页面的标题呢?
【问题讨论】:
标签: jsf facelets title managed-bean
我可以使用 HttpServletRequest 从后端 bean 获取 jsf 中当前页面的 url。但是有没有办法获得当前页面的标题呢?
【问题讨论】:
标签: jsf facelets title managed-bean
不,这不是直接可能的。它仅以 HTML <title> 标记的形式出现在与 HTTP 请求关联的 HTTP 响应中。理论上,您可以使用 XML 解析器解析视图文件并从中提取 <title> 元素,但这很笨拙。
最好反其道而行之。控制器感兴趣的变量无论如何都属于模型,而不是(硬编码)在视图中。将 title 设为模型的属性并在 EL 中显示,如下所示:
<title>#{page.title}</title>
您可以根据其 URL 或更好的是其 JSF 视图 ID(其语法为 /path/filename.xhtml)来映射页面。如果你把它们放在Map<String, Page> 中,那么你应该可以得到如下页面的标题
String title = pages.get(facesContext.getViewRoot().getViewId()).getTitle();
【讨论】: