0

Apache Wicket を使用してブログを作成しています。リッチ テキスト エディターには、Github から取得した stackoverflow マークダウン フォークを使用しています。HTML をデータベースに保存します。コンテンツを取得してラベルに表示すると、問題が発生します。

問題は、ユーザーがコンテンツとコードの両方を含む可能性があることですlabel.setEscapeModelStrings(false);。そのため、フォーマットを維持するために、ラベルで使用するデータベースからコンテンツを取得します。ただし、投稿のタグに HTML が含まれている場合はpre、それも解析およびレンダリングされます。

タグ内の HTMLpreがレンダリングされず、そのまま表示されないようにしてください。

この問題は、ユーザーの投稿に HTML コードが含まれている場合にのみ発生します。サーバー側またはクライアント側のソリューションはありますか?

ありがとう

更新 Jsoup を使用してコンテンツを解析し、内部のコンテンツをエスケープできる可能性がありますpre。例は次のとおりです。
content.replaceAll(">",">");

4

1 に答える 1

0

データベースに保存する前に文字列をエスケープするという@Nicktarの提案に部分的に従いましたが、
@ Javascriptがあまり得意ではないため、Jsoupを使用して文字列を解析し、preタグ内のコンテンツをエスケープすることにしました。ここにコードがあります:-

Document doc = Jsoup.parse(labelText); //labelText comes from input
    Elements titleElements = doc.getElementsByTag("pre");
    for (Element pre : titleElements) {
        String content = pre.html().replaceAll("<", "&lt;");
        String content2 = content.replaceAll(">", "&gt;");
        pre.html(content2);
    }

//Save to db..

そして、それは機能します。

于 2013-10-08T10:21:09.697 に答える