erlang n2o 渲染得到 <span id=&quot

erlang n2o render get &lt;span id=&quot

我想用n2o和rebar3写web。 但是我发现页面有问题,代码在这里。

index.erl

-module(index).
  -compile(export_all).
  -include_lib("n2o/include/wf.hrl").
  -include_lib("nitro/include/nitro.hrl").




  main() -> #dtl{file="prod",app=web, ext="dtl", bindings=[{body,body()} ]}.

  body() ->
      [ #span   { id=display },                #br{},
        #span   { body="Login: " },            #textbox{id=user,autofocus=true}, #br{},
        #span   { body="Join/Create Feed: " }, #textbox{id=pass},
        #button { id=loginButton, body="Login",postback=login,source=[user,pass]} ].

prod.dtl

<html >
<head>
  <title>{{title}}</title>
</head>
<body>
            {{body}}
</body>
</html>

我得到了结果:

<html >
<head>
  <title></title>
</head>
<body>
            &lt;span id=&quot;display&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;Login: &lt;/span&gt;&lt;input id=&quot;user&quot; type=&quot;text&quot; autofocus=&quot;true&quot;/&gt;&lt;br/&gt;&lt;span&gt;Join/Create Feed: &lt;/span&gt;&lt;input id=&quot;pass&quot; type=&quot;text&quot;/&gt;&lt;button id=&quot;loginButton&quot; type=&quot;button&quot;&gt;Login&lt;/button&gt;
</body>
</html>

我怎样才能得到'<'而不是'<'

erlydtl 启用 this commit (also see #80 and #120{{}} 中的值的自动转义)。如果您使用的版本包含此提交(从页面上看是 0.9.0 或更高版本),则必须手动将该值标记为安全。

而不是:

{{ body }}

做:

{{ body | safe }}

注意:您应该意识到将不受信任的字符串标记为安全的风险:https://en.wikipedia.org/wiki/Cross-site_scripting.