は、あなたが
- エンコードHTML
- として、あなたの文字列が
<br/>
に改行文字を変換することができます。
これは、Grailsのアプリ/タグライブラリに次のタグのlibを保存することによって達成することができます。
class LinesTagLib {
def lines = { attrs, body ->
out << attrs['string'].encodeAsHTML().replace('\n', '<br/>\n')
}
}
我々はすでにタグでencodeAsHTMLを()適用されるように、あなたが使用している場合、HTMLコーデックを無効にする必要があります(<%=expression%>
代わりに${expression}
を使用して)タグ:
<g:lines string="<%=savedTextarea%>" />
代替案は、になりは、そのための独自のコーデックを書く:
class HTMLLinesCodec{
static encode = { str ->
str.encodeAsHTML().replace('\n', '<br/>\n')
}
}
あなたは、あなたはディレクティブを追加することで、この振る舞いをしたいGSPファイルに対して、このコーデックを使用することができます。
<%@ defaultCodec="HTMLLines" %>
ねえアントニー、お返事に感謝。私は中間的な解決策を思いついた。 encondingを "html"として扱い、テキストエリアを処理する方法については、<%= book?.description?.encodeAsHTML()。replaceAll( '\ n'、 '
')%>としてください。このソリューションには何らかの欠点がありますか? – Pomario
あなたのソリューションはOKです。私はGSPのどこにでもそのような複雑なステートメントを置くのは好きではないので、TagLibを使う理由です。後で '
文字列
'で囲む場合は、TagLibを変更するだけです。しかし、あなたが正しいと思うのは、もしあなたが一箇所でしか使用しないなら、 '<%= book?.description?.encodeAsHTML()。replaceAll( '\ n'、 '')%>'を使うのが最も速い解決法かもしれない。 – Antoine
LinesTagLibに静的なdefaultEncodeAs = 'raw'を追加し、 (Grails 2.3.6) –
CoPLaS