【发布时间】:2015-04-20 00:34:33
【问题描述】:
module Main where
import Happstack.Lite
import Text.Html
main :: IO ()
main = serve Nothing $ msum [
nullDir >> ok homePage
, notFound page404
]
homePage :: Response
homePage = toResponse $ do
p (toHtml "hello") +++
strong (toHtml "BOLD")
page404 :: Response
page404 = toResponse "<strong>How do I parse the tag STRONG?</strong>"
您好,我是 happstack 的新手。我想知道是否有一种方法可以只显示带有 html 标签的字符串作为响应,而不是使用 html 模板库?
在上面的代码中,page404中的<strong>标签被转义了,所以我得到了“<strong>How do I pase the tag BOLD?</strong>”作为响应,而一个主页呈现为“如何解析标签BOLD”。
我必须先解析字符串吗?但是如果html字符串很大,那会不会太慢?
提前致谢。
【问题讨论】:
-
你确定 HTML 被转义了吗?查看ToMessage String instance,看起来响应类型是唯一错误的地方。在这种情况下,您有多种选择:您可以 newtype String 并创建一个单独的实例,但使用不同的内容类型,或者您可以使用不同的组合器。
-
感谢您的回复。我成功编译并运行了上面的代码。我认为没有类型错误。标签被转义,例如在路由
http://localhost:8000/no-such-route -
我没有声称有。只是您需要更改响应类型,因为
ToMessage String实例将其设置为 text/plain 而不是 text/html。 -
我可以接受你作为答案吗? ; )