【问题标题】:Facelets: how to pass a ui:insert value as an html attribute?Facelets:如何将 ui:insert 值作为 html 属性传递?
【发布时间】:2010-10-06 19:28:15
【问题描述】:

我正在尝试在 Facelets/JSF 环境中完成一个小调整。我几乎不知道它们是如何组合在一起的。

我在各个页面上定义了一个值作为“标题”

<ui:define name="title">PageUID_123</ui:define>

在另一个页面上,我引用了这个:

<ui:insert name="title"/>

我可以很好地将 html 标签包裹在插入内容周围,但我需要能够将“title”的值作为另一个元素的属性输出。我的最终目标是让它像这样在 html 中呈现:

<meta name="pageid" content="PageUID_123"/>

如果我尝试将插入标签放在 content="" 位中,则会引发解析错误。有没有办法做到这一点?

【问题讨论】:

    标签: jsf facelets


    【解决方案1】:

    我面前没有工作环境,但我相信你不想让你使用&lt;ui:define&gt;,而是你想使用&lt;ui:param&gt;然后使用${x}#{x} (或忘记哪个或是否重要)将它们拉出来。

    因此,以您为例,您将拥有:

    <ui:param name="title" value="PageUID_123" />
    

    然后:

    <meta name="pageid" content="${title}"/>
    

    我唯一担心的是你使用 include 来拥有漂亮的模板,即

    模板:

    <html>
        <head>
            <meta name="pageid" content="${title}"/>
        </head>
        <body>
            <ui:insert name="content" />
        </body>
    </html>
    

    内页:

    <html xmlns="...so many">
        <ui:param name="title" value="PageUID_123" />
        <ui:define name="content">
            <!-- content goes here -->
        </ui:define>
    </html>
    

    我真的不知道那会不会飞……

    编辑:您可能想尝试${title}#{title} 只是为了踢一下您现在的做法,它可能会起作用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2012-07-12
    • 2010-12-19
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多