map[string]string
の値を使用する一連のテンプレートがあります。マップルックアップが失敗したときのテンプレートからの解析エラーの返信
<h1> You sent in {{.Field1}} and {{.Field2}} </h1>
ペイロードのようなものは次のようになります。実行時に決定されている私は、テンプレートとペイロードとしてstruct
にdata
を変換することはできませんerr := tmpl.Execute(w, data); // data is map[string]string and was decoded from the payload
:{"Field1": "Value1", "Field2": "Value2"}
として呼び出されます。これらのテンプレートはビジネスユーザーによって作成されたもので、新しいテンプレートがあるたびに各テンプレートのタイプを作成してバックエンドを変更する必要はありません。従って、map[string]string
を解決したいという願望がある。
上記のデザインの問題点は、テンプレートで使用されているフィールドが実行時に渡されない場合です。テンプレートを実行すると、欠落しているフィールドはテンプレート内に空の文字列を返します。私はそれが起こるとエラーを返すしたいと思います。
マップルックアップが失敗したときにテンプレートが解析エラーを返すようにする方法があるかどうかを知りたいですか?または、動的ペイロードを可能にするテンプレートに実行時エラーチェックを伴う一般的なstruct
値を渡す方法はありますか?
ありがとうございます!
Tnanks @KarrotKake。 '' html/template ".New(" ")。オプションが定義されていない(タイプ*" html/template ".Templateにフィールドまたはメソッドのオプションがありません)'私は使用しています'go1.6'(appengine - 違いがあれば分かりません) – Ecognium
@Ecognium Go 1.6にはテンプレート' Option'メソッドがあります。更新された回答からリンクされている例を参照してください。 –
もう一度ありがとう!私はこの問題がappengineランタイム側にあるようだと思います。この作業をするには、管理対象VMに切り替えなければならないでしょう。私は 'Option'について知らなかったので、これをどう扱うべきかを示してくれてありがとう。 – Ecognium