JSF h:带有hml实体字符,上标等的commandLink

时间:2015-06-22 12:22:12

标签: jsf jsf-2

在动态生成的h:commandLink中使用特殊字符和格式的最佳方法是什么?

我将等式(例如A =π* r 2 )渲染为h:commandLink项目列表,以便可以单独点击等式中的每个符号:

JSF:

<ui:repeat value="#{eqBean.eqSymbolDisplays}" var="eqSym">
  <h:commandLink value="#{eqSym.text}" styleClass="#{eqSym.styleClass}" action="#{eqBean.eqSymbolClick(eqSym)}" />
</ui:repeat>                                

豆:

public String getText(){
    // Return the text for a given symbol
}

问题是当符号需要特殊字符,特殊数学符号和/或需要是超级脚本或子脚本时,getText方法应该做什么?

以下是一些具体问题:

(1)如何在CommandLink中使用希腊字母π符号?如果我返回&pi;那么这就是显示的内容,而不是希腊符号

(2)在CommandLink中执行上标的最佳方法是什么?我可以使用CSS样式,但有些人说这是一个坏主意,特别是当上标暗示意义而不仅仅是表达时,就像它对一个权力提升的数字所做的那样。 见:

Beware CSS for Superscript/Subcript

1 个答案:

答案 0 :(得分:1)

答案显而易见:只需将h:commandLink的value属性替换为具有h:outputText的子escape="false"元素:

JSF:

<ui:repeat value="#{eqBean.eqSymbolDisplays}" var="eqSym">
  <h:commandLink styleClass="#{eqSym.styleClass}" action="#{eqBean.eqSymbolClick(eqSym)}" >
    <h:outputText value="#{eqSym.htmlText}" escape="false"/>
  </h:commandLink>
</ui:repeat>