我想用n2o和rebar3写网页。 但是我的页面出错了,代码在这里。
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>
<span id="display"></span><br/><span>Login: </span><input id="user" type="text" autofocus="true"/><br/><span>Join/Create Feed: </span><input id="pass" type="text"/><button id="loginButton" type="button">Login</button>
</body>
</html>
我怎样才能得到'&lt;'不是'&amp; lt'
答案 0 :(得分:0)
erlydtl
已启用自动转义this commit中{{}}
内的值(另请参阅#80
和#120
)。如果您正在使用包含此提交的版本(从页面看起来像0.9.0或更高版本),则您必须手动将该值标记为安全。
而不是:
{{ body }}
做的:
{{ body | safe }}
注意:您应该了解将不受信任的字符串标记为安全的风险:https://en.wikipedia.org/wiki/Cross-site_scripting。