我正在使用JSF 2.1,我想将参数传递给自定义标签,该标签使用ui:param
来记录该标签的URL和页面标题。这可以正常工作,但是如果有f:metadata
节,则不会传递任何数据,即dynamicBreadCrumb.addItem()
期间不会调用模板中的preRenderView
。
这是使用模板的页面
<ui:param name="tilte" value="#{msg['PAGE_HEADER.ORDER']}"/>
<!-- when this is within the page, the title param is not passed on -->
<f:metadata>
<f:viewParam name="orderNumber"
value="#{editOrder.model.orderNumber}"/>
</f:metadata>
... and so on
这是自定义标签
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:param name="page" value="#{page}"/>
<ui:param name="param" value="#{paramValues}"/>
<h:form id="history" >
<h:outputText value="#{msg['COMMON.HISTORY_BAR']}" />
<ul id="last-actions-list">
<ui:repeat value="#{dynamicHistoryBean.items}" var="item">
<li><a href="#{item.href}">#{item.title}</a></li>
</ui:repeat>
</ul>
</h:form>
这是模板
<ui:param name="title" value="#{title}"/>
<ui:param name="param" value="#{paramValues}"/>
<f:metadata>
<f:event type="preRenderView" listener="#{dynamicHistoryBean.addHistoryItem(title,param)}"/>
</f:metadata>