我使用Freemarker XML处理来构建菜单。我想查找当前元素或其中任何一个子元素是否具有与activeNode匹配的id。
但是我在编写XPath的Freemarker语法时遇到了很多麻烦。这似乎与具有子链接的所有节点匹配(请注意item
是对客户节点的节点引用)
<#assign aNode="search-customers" />
<#assign xpath>link["@id=${aNode}"]</#assign>
<#if item[xpath][0]?has_content>
<#assign cssClass> class="active"</#assign>
</#if>
这是我试图匹配的xml的相关部分。例如,search-customers
节点应突出显示customers
节点。
<menu>
<top title="title.home" url="/admin" icon="fa fa-home" />
<top title="title.customers" id="customers" url="javascript:;" icon="fa fa-group">
<link title="title.search.customers" id="search-customers" url="/admin/customers"></link>
<link title="title.register.customer" id="register-customer" url="/admin/customers/new"></link>
<link title="title.contact.us" id="contact-us" url="/admin/contactus"></link>
<link title="title.subscribers" id="subscribers" url="/admin/subscribers"></link>
</top>
理想情况下,它也会匹配当前节点ID - 因此,如果子节点ID或当前节点ID与activeNode
匹配,则css应处于活动状态。
任何人都可以帮助使用Freemarker语法吗?
答案 0 :(得分:0)
没关系,我最终弄明白了,我认为在使用方括号语法的文档中出现了错误....
<#if strVal=aNode || item["link[@id='${aNode}']"]?has_content>
<#assign cssClass> class="active"</#assign>
<#else>
<#assign cssClass></#assign>
</#if>