带有h:链接结果导航的jsf复合组件无法匹配

时间:2014-01-18 14:42:50

标签: jsf-2 composite-component

我想使用复合组件重写部分代码。

我需要改为:

<ui:fragment rendered="#{!empty param.vid}">
<h:link outcome="index" value="#{msgs.vendor_tabmenu_profile}" 
        styleClass="#{(param.pg == 'profile') ? 'selected' : ''}">
    <f:param name="pg" value="profile"/>
    <f:param name="vid" value="#{param.vid}"/>
</h:link>
<h:link outcome="index" value="#{msgs.vendor_tabmenu_orders}" 
        styleClass="#{(param.pg == 'orders') ? 'selected' : ''}">
     <f:param name="pg" value="orders"/>
     <f:param name="vid" value="#{param.vid}"/>
</h:link>
....

有些想法:

<components:vmtab outPage="index"
                                  value="#{msgs.vendor_tabmenu_search}"
                                  withParam="false"
                                  pg="" 
                                  vid=""
                                  selectedClass="#{( (empty param.pg) || 
                                      (param.pg == 'search') || 
                                      (param.pg == 'index') ) ? 'selected' : ''}"
                />

使用:

<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:composite="http://java.sun.com/jsf/composite">

    <composite:interface>
        <composite:attribute name="outPage" required="true"/>
        <composite:attribute name="withParam" required="true"/>
        <composite:attribute name="pg" required="true"/>
        <composite:attribute name="vid" required="true"/>
        <composite:attribute name="value" required="true"/>
        <composite:attribute name="selectedClass" />
        <composite:attribute name="styleClass" />
    </composite:interface>

    <composite:implementation>
        <h:link 
            outcome="#{composite.attrs.outPage}"
            value="#{composite.attrs.value}"
            styleClass="#{''.concat((!empty composite.attrs.styleClass ? composite.attrs.styleClass : '')).concat(
                           (!empty composite.attrs.selectedClass ? composite.attrs.selectedClass : ''))}"
            >
            <f:param name="pg" value="#{composite.attrs.pg}" 
                     rendered="#{composite.attrs.withParam}"/>
            <f:param name="vid" value="#{composite.attrs.vid}"
                     rendered="#{composite.attrs.withParam}"/>
        </h:link>
    </composite:implementation>
</html>

但我遇到了麻烦。 JSF说我: 此链接已停用,因为导航案例无法匹配

请解释我做错了什么。

UPD:

感谢您的关注。抱歉。发现了问题。邪恶的根源,经常发生,注意力不集中。我想如果我用XML 复合命名空间编写,我必须使用它。但EL使用名为 cc 的对象。

PS:我不知道如何关闭或删除..或者我该怎么处理这个问题?

0 个答案:

没有答案