当存在f:metaData时,ui:param不起作用

时间:2018-07-17 21:16:36

标签: jsf facelets

我正在使用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>

0 个答案:

没有答案