Facelets:如何传递ui:插入值作为html属性?

Geu*_*uis 8 jsf facelets

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

我在各个页面上定义了一个值为"title"

<ui:define name="title">PageUID_123</ui:define>
Run Code Online (Sandbox Code Playgroud)

在另一个页面上,我引用了以下内容:

<ui:insert name="title"/>
Run Code Online (Sandbox Code Playgroud)

我可以在插入周围包装html标签就好了,但我需要能够输出"title"的值作为另一个元素的属性.我的最终目标是以html呈现,如下所示:

<meta name="pageid" content="PageUID_123"/>
Run Code Online (Sandbox Code Playgroud)

如果我尝试将insert标记放在content =""位中,则会抛出解析错误.有没有办法做到这一点?

SCd*_*CdF 6

我没有在我面前的工作环境,但我相信你不想使用<ui:define>,而是你想使用<ui:param>然后使用${x}#{x}(或忘记哪个或如果重要)将它们拉出来.

那么,对于你的例子你会有:

<ui:param name="title" value="PageUID_123" />
Run Code Online (Sandbox Code Playgroud)

然后:

<meta name="pageid" content="${title}"/>
Run Code Online (Sandbox Code Playgroud)

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

模板:

<html>
    <head>
        <meta name="pageid" content="${title}"/>
    </head>
    <body>
        <ui:insert name="content" />
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

内页:

<html xmlns="...so many">
    <ui:param name="title" value="PageUID_123" />
    <ui:define name="content">
        <!-- content goes here -->
    </ui:define>
</html>
Run Code Online (Sandbox Code Playgroud)

我真的不知道这是否会飞......

编辑:你可能想尝试${title}#{title}只是为了你现在的方式踢,它可能只是工作.