在h:commandLink中渲染隐藏的跨区文本

时间:2013-04-30 15:10:45

标签: jsf jsf-1.2

我们有一个辅助功能要求,可以为屏幕阅读器提供额外的“屏幕外”文本。所以我们想要最终渲染类似的东西(为了清晰起见省略了属性)

<a>Edit Details<span class="hiddenOffScreen"> for John Smith</span></a>

问题是标准的jsf1.2 <h:commandLink>标记不尊重escape属性。我试过像<h:commandLink escape="false" value="#{linkText}"/>这样的东西,其中linkText评估了上面显示的a标签的内容,但是这实际上呈现了span标签(即转义&lt;和&gt;)

如何最好地满足此要求?我当然可以稍后使用JQuery轻松添加范围,但是,对于我自己的教育,我想尝试使用自定义渲染器 - 但不确定如何使用添加“onClick”事件的现有默认渲染器处理程序和相关的JavaScript。在搜索自定义commandLink渲染器时,我的google-foo似乎失败了。

请记住,这是JSF 1.2,我们不能使用任何第三方标记库,因为我们正在使用一个非常旧版本的WebSphere Portal Server。

2 个答案:

答案 0 :(得分:2)

您可以在<h:commandLink>标记内嵌套内容,包括其他标记和/或隐式文字,而不是在其value属性中指定文字,以实现您的功能:

<h:commandLink ...>
    <h:outputText .../>
    <span class="hidden"></span>
    #{bean.someText}
</h:commandLink>

这将完全呈现您想要的内容。

答案 1 :(得分:0)

使用&lt;或者&gt;写&lt; &GT;