<h:outputtext>如何显示固定长度的内容?</h:outputtext>

时间:2011-10-23 05:44:18

标签: java html jsf-2

我有一个这样的字符串:

<p><strong>Make sure you’re paying the right price for your household and trade services with pricing calculators from Australia’s largest online services marketplace, ServiceSeeking.com.au </strong></p>. 

我想用<h:outputText escape="false">显示此字符串的一部分(只是内容,没有HTML标记)。我试过substring(),但我不知道html标签在哪里完成,所以我的表单已经破了。我想只得到100个字符。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我不确定我是否100%正确理解你的问题,但是如果您要显示的所有字符串都是以您的示例的格式显示的,那么您可以显示它们而不用html并以这种方式缩短为100个字符:

<h:outputText value="#{textExtractorBean.extractedText}"/>

这就是豆子:

class TextExtractorBean{
...
  getExtractedText(){
    Pattern pattern = Pattern.compile("<([a-z])+>");
    Matcher matcher = pattern.matcher(text);

    int firstIdxAfterOpeningTags = 0;
    while(matcher.find()){
        firstIdxAfterOpeningTags = matcher.end();
    }

    pattern = Pattern.compile("</([a-z])+>");
    matcher = pattern.matcher(text);

    int firstIdxBeforeClosingTags = text.length();
    if(matcher.find()){
        firstIdxBeforeClosingTags = matcher.start();
    }

    String extractedText = text.substring(firstIdxAfterOpeningTags,
            firstIdxBeforeClosingTags);
    String shortenedText = extractedText.length() > 0 ? extractedText
            .substring(0,100) : extractedText;
    return shortenedText;
  }
...
}

其中 text 变量包含类似于示例的字符串。

答案 1 :(得分:0)

您可以使用以下JSF HTML标记输出文本:

<h:outputText escape="false" value="Your content here"  />