jak*_*bka 1 java jsf javabeans
我正在尝试在JSF中为我的Web应用程序编写导航.
到目前为止,我有这个:
<ul>
<ui:repeat value="#{pageBean.getPages()}" var="page">
<li class="#{(pageContext.request.requestURI.endsWith(page.url)) ? 'current_page_item' : '' }">
<a href="#{pageContext.servletContext.getRealPath(page.url)}">#{page.name}</a>
</li>
</ui:repeat>
</ul>
Run Code Online (Sandbox Code Playgroud)
但是anchor的href属性总是空的.此外,我不确定是否pageContext.request.requestURI.endsWith(page.url)
正常 - 我猜不是,因为没有页面有current_page_item类.
我究竟做错了什么?
谢谢!
该getRealPath()
确实没有做什么,你认为它.阅读它的javadoc.
但是这种方法不必要地过于复杂.如果将JSF <h:link>
组件与视图ID列表结合使用,则无需自己生成绝对路径.<h:link>
如果有的话,将自动添加正确的上下文路径.
<ul>
<ui:repeat value="#{pageBean.pages}" var="page">
<li class="#{view.viewId == page.viewId ? 'current_page_item' : ''}">
<h:link value="#{page.name}" outcome="#{page.viewId}" />
</li>
</ui:repeat>
</ul>
Run Code Online (Sandbox Code Playgroud)
视图ID正是JSF在其封面下用于定位视图和处理导航的页面标识符.视图ID是视图文件的webcontent相对路径,例如/foo/index.xhtml
.
请注意,#{view}
上例中的是一个指向当前的隐式EL变量UIViewRoot
,因此您无需自己创建/准备它.