1

私はHStringTemplate、データ構造を使用して「穴」を埋める非常に単純なテンプレートをレンダリングするために使用しています。テンプレートレンダリングの結果は、String私が与えtoResponseたものです。

このレンダリングされたテンプレートは有効ですが、htmlhappstackは。に使用text/plainContent-Typeます。

これの理由は何ですか?text/htmlWebサーバーなので、デフォルトにすべきではありませんか? 本当に自分で使っtoResponseBSて設定text/htmlする必要がありますか?

これが作成するコードですServerPart Response

data Person = Person                                                                                                                                                                                                
    { name :: String                                                                                                                                                                                                
    , age ::Int                                                                                                                                                                                                     
    } deriving (Data, Typeable)                                                                                                                                                                                     

buildTemplate :: Person -> String -> FilePath -> ServerPart Response                                                                                                                                                
buildTemplate fields name template = do                                                                                                                                                                             
    unrendered <- liftIO $ readFile template                                                                                                                                                                        
    ok $ toResponse $ renderTemplate name fields unrendered                                                                                                                                                         

renderTemplate :: String -> Person -> String -> String                                                                                                                                                              
renderTemplate name fields unrendered = toString rendered                                                                                                                                                           
    where rendered = setAttribute name fields $ newSTMP unrendered

そして、これがWebサーバーからの出力です。

Connection:Keep-Alive
Content-Type:text/plain; charset=UTF-8
Date:Wed, 09 Jan 2013 14:51:27 GMT
Server:Happstack/7.1.1
Transfer-Encoding:chunked

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>Memlikweb</title>
    </head>
    <body>
        <h1>Hello, Richard!<h1>
        <p>Do you have 25 for me?</p>
    </body>
</html>
4

2 に答える 2

3

Text.HtmlをtoResponseに渡すと、コンテンツタイプはtext/htmlになります。文字列を渡しています。これは、toResponseがコンテンツタイプがプレーンテキストであることを意味します。

于 2013-01-09T15:15:45.517 に答える
2

happstack-hstringtemplateパッケージは、インスタンスを提供します。これToMessage StringTemplateは、インポートしてから、toResponseレンダリングせずにテンプレートで使用すると、正しいことを実行することを意味します。

于 2013-01-10T09:34:44.070 に答える