私は一見かなり些細な仕事に直面していますが、一日の間に私はそれで何とか前進することに成功しませんでした。ベロシティテンプレートで文字列を処理する必要があります。文字列には次のようなビューがあります。
Maj - [at552] - asdfghjkksfgh <br /> Avg - [at553] - asdfghjkksfgh <br /> etc
[]記号間のテキストを次のテキストに置き換える必要があります。
<a href="http://someaddress/at522">at522</a> (at522 is specific for
each [ ] block)
私は非常に多くのアプローチを試しましたが、どれもうまくいきませんでした。そのため、ここに投稿できるコードのスニペットすらわかりません。重要な詳細は、アプリケーションのJava部分にはアクセスできず、velocityテンプレートに渡されるオブジェクトだけにアクセスできることです。これはメール用のテンプレートなので、JavaScriptは使用できません。私は本当にすべてのアドバイスをいただければ幸いです。
UPDATEこれは[]の最初の出現に対して正常に機能するコードです。
#set ($scopeComment = $issue.getCustomFieldValue("customfield_10201").replaceAll("\n", "<br />"))
#set ($start = $scopeComment.indexOf("["))
#set ($end = $scopeComment.indexOf("]"))
#set ($substr = $scopeComment.substring($start, $end))
#set ($scopeComment = $scopeComment.replace($substr, "<a href=\"localhost/$substr\">$substr</a>"))
しかし、すべての[]ブロックに対してループで動作させることはできません。これが私が試しているアプローチの1つです。
#foreach ($index in [0..$scopeComment.length()])
#set($nextIndex = $index.index+1)
#set($curChar = $scopeComment.substring($index.index, $nextIndex))
#if ($curChar.equals("["))
#set ($start = $count+1)
#set ($end = $scopeComment.indexOf("]", count))
#set ($sub = $scopeComment.substring($start, $end))
$sub <br/>
#end
#end