我想使用复合组件重写部分代码。
我需要改为:
<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:我不知道如何关闭或删除..或者我该怎么处理这个问题?