Facelets:如何将 ui:insert 值作为 html 属性传递?
Posted
技术标签:
【中文标题】Facelets:如何将 ui:insert 值作为 html 属性传递?【英文标题】:Facelets: how to pass a ui:insert value as an html attribute? 【发布时间】: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="" 位中,则会引发解析错误。有没有办法做到这一点?
【问题讨论】:
【参考方案1】:我面前没有工作环境,但我相信你不想让你使用<ui:define>
,而是你想使用<ui:param>
然后使用$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
只是为了踢一下您现在的做法,它可能会起作用。
【讨论】:
在 facelets 中使用 $x 或 #x 并不重要。他们的意思是一样的:facelets.dev.java.net/nonav/docs/dev/docbook.html#el以上是关于Facelets:如何将 ui:insert 值作为 html 属性传递?的主要内容,如果未能解决你的问题,请参考以下文章
JSF 2:如何将包含要调用的参数的动作传递给 Facelets 子视图(使用 ui:include 和 ui:param)?
JSF/Facelets:为啥将 JSF/Facelets 与 HTML 标签混合不是一个好主意?
如何在 Facelets 的 EL 布尔表达式中使用 &&?