17.5. SeamTextParser の使用


<s:formattedText/> JSF コンポーネントは内部的に org.jboss.seam.text.SeamTextParser を使用します。 このクラスを直接使って独自のテキスト解析機能、 レンダリング機能、 HTML サニテーションの手順を実装することができます。 JavaScript ベースの HTML エディタなどリッチテキストの入力用にカスタムのフロントエンドインターフェースがある場合、 クロスサイトスクリプティング (XSS) 攻撃から防御する目的でユーザーの入力を確認する場合に便利です。 またカスタムの Wiki テキスト解析やレンダリングエンジンとしても使用できます。
次の例ではカスタムのテキストパーサを定義しています。 これはデフォルトの HTML サニタイザーを無効にします。
public class MyTextParser extends SeamTextParser {

    public MyTextParser(String myText) {
        super(new SeamTextLexer(new StringReader(myText)));

        setSanitizer(
                     new DefaultSanitizer() {
                         @Override
                         public void validateHtmlElement(Token element) throws SemanticException {
                             // TODO: I want to validate HTML elements myself!
                         }
                     }
                     );
    }

    // Customizes rendering of Seam text links such as [Some Text=&gt;http://example.com]
    @Override
    protected String linkTag(String descriptionText, String linkText) {
        return "&lt;a href=\"" + linkText + "\"&gt;My Custom Link: " + 
            descriptionText + "&lt;/a&gt;";
    }

    // Renders a &lt;p&gt; or equivalent tag
    @Override
    protected String paragraphOpenTag() {
        return "&lt;p class=\"myCustomStyle\"&gt;";
    }

    public void parse() throws ANTLRException {
        startRule();
    }
    
}
Copy to Clipboard Toggle word wrap
linkTag()paragraphOpenTag() メソッドは、レンダリングされた出力をカスタマイズするために無効にすることができる 2 種類のメソッドです。 これらのメソッドは通常、 String 出力を返します。 詳細については Java ドキュメントを参照してください。 org.jboss.seam.text.SeamTextParser.DefaultSanitizer Java ドキュメントには HTML のエレメント、 属性、 デフォルトでフィルタされる属性値などの詳細も記載されています。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat