2
1
0

スペースレイアウトのページレイアウトで、本文内の特定語句の有無により表示を制御しようと思っています。
そのため、JAVAの構文を参考に、下記のようなコードを書いてみたのですが、検索がうまく行われておらず、本文に○○が含まれていようがいまいが変数名がそのまま出力されてしまっています。

本文から文言を検索するのはindexOfではだめなのでしょうか?


本文
<div id="main-content" class="wiki-content">
#set($num = $body.indexOf("○○"))
{$num}<br>
$body
</div>

出力結果

{$num}
本文





    Commentコメントを追加...

    1 回答

    1.  
      2
      1
      0

      レイアウトの body オブジェクトは、Stringオブジェクトではなく少し使いずらいので

      pageオブジェクトから本文内の文字列を取得したほうがよいかと思います。

      #set($num = $page.getContentEntityObject().getBodyAsStringWithoutMarkup().indexOf("○○"))
      ${num}<br>

      https://docs.atlassian.com/atlassian-confluence/6.6.0/com/atlassian/confluence/pages/Page.html

      https://docs.atlassian.com/atlassian-confluence/6.6.0/com/atlassian/confluence/core/ContentEntityObject.html

      getBodyAsStringWithoutMarkup でマークアップの部分を除いた文字列

      getBodyAsString だと保存形式(XMLの状態)での文字列が取得できます。

      1. 蒼龍

        Kengo Ohsakiさん

        ありがとうございました。getBodyAsString()の方でしたかった動作をしてくれました。
        ありがとうございます。

        レイアウトにはシンプルに$bodyとあったんで、ここから取得できると思っていたんですが甘かったみたいですねw
        助かりました。

      2. Kengo Ohsaki

        蒼龍-san,

        無事期待する動作をしてよかったです!

        また何かございましたらご連絡ください。

      Commentコメントを追加...