問題タブ [handlebars.java]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
handlebars.js - ハンドルバー: テンプレート用のパーシャルとヘルパー
一部のプロジェクトでは、ビュー レイヤーにハンドルバーを使用し始めています。私たちは、いくつかのテンプレート化を行う 2 つの方法の間の岐路に立ち始めています。テンプレートを処理するためにパーシャルを使用しており、次のような小さな HTML テンプレートを使用しています。
別の開発者は、これにはパーシャルを使用するべきではなく、代わりにヘルパーを作成する必要があると感じています。
ヘルパーの方が入力パラメーターの処理が簡単であることがわかります (現在、何らかの形式の「インクルード」ヘルパーを使用して、追加の変数を使用してこれらのパーシャルを含めるようにしています)。しかし、HTML をコード内の文字列に書き込んでいるというのは、私には正しくありません。懸念事項をそこで適切に分離しているとは思いません。また、([Handlebars.Java][2] を介して) Java でハンドルバーを使用しているため、HTML はコンパイルされたコードに非常に多く、ビュー ファイルを編集するだけではありません。
ハンドルバーでテンプレートを処理する一般的に受け入れられている方法はありますか? パーシャルまたはヘルパー、または私が知らない何かがありますか?
java - Java: 複数の値をハンドルバー テンプレートに渡す
ハンドルバー テンプレートを使用して、メール コンテンツを送信する前に動的に準備しています。
値を 1 つだけ渡すのは簡単です。例えば:
What's up {{this}}
テンプレートは で正常に動作しtemplate.apply(firstName)
ます。
テンプレートを に変更して、とWhat's up {{this}}, {{this}}
で記入してみました。template.apply(lastName);
template.apply(firstName);
しかし、うまくいきません。
json - Handlebars-proto と logstash-logback-encoder slf4j の競合
私のプロジェクトでは、handlebars-proto を使用してテンプレートを json にバインドしています。また、logstash-logback-encoder を使用して、logstash の Json 形式でログインしようとしています。以下は私のコンパイル依存関係です(他の依存関係とともに)
ハンドルバーを削除すると、依存関係のログが正常に機能します。ハンドルバーが存在する場合、次の警告が表示されます。
SLF4J: クラスパスに複数の SLF4J バインディングが含まれています。SLF4J: [jar:file:/C:/Users/manish/.gradle/caches/modules-2/files-2.1/com.github.jknack/handlebars-proto/4.0.5/5979737344d99e0d8b482e828f247ae86fd0113/handlebars-proto でバインドが見つかりました-4.0.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: [jar:file:/C:/Users/manish/.gradle/caches/modules-2/files-2.1/ch でバインドが見つかりました.qos.logback/logback-classic/1.1.6/665e3de72f19ec66ac67d82612d7b8e6b3de3cd0/logback-classic-1.1.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: http://www.slf4j.org/codesを参照説明については.html#multiple_bindingsを参照してください。
エラーが続きます:
[ch.qos.logback.classic.LoggerContext] のインスタンス化に失敗しました 報告された例外: java.lang.NoSuchMethodError: ch.qos.logback.core.spi.ContextAwareBase.(Lch/qos/logback/core/spi/ContextAware;)V net.logstash.logback.composite.CompositeJsonFormatter.(CompositeJsonFormatter.java:106) で net.logstash.logback.composite.loggingevent.LoggingEventCompositeJsonFormatter.(LoggingEventCompositeJsonFormatter.java:28) で net.logstash.logback.LogstashFormatter.(LogstashFormatter. java:122) net.logstash.logback.LogstashFormatter.(LogstashFormatter.java:118) で net.logstash.logback.LogstashFormatter.(LogstashFormatter.java:114) で net.logstash.logback.encoder.LogstashEncoder.createFormatter(LogstashEncoder) .java:31) で net.logstash.logback.encoder.CompositeJsonEncoder.(CompositeJsonEncoder.java:48) で net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder.(LoggingEventCompositeJsonEncoder.java:23) で net.logstash.logback.encoder. LogstashEncoder.(LogstashEncoder.java:27) は sun.reflect にあります。NativeConstructorAccessorImpl.newInstance0(Native Method) の sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) の sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) の java.lang.reflect.Constructor.newInstance(Constructor. java:526) で java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core で.joran.spi.Interpreter.callBeginAction(Interpreter.java:276)、ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148)、ch.qos.logback.core.joran.spi .Interpreter.startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)50)50)newInstance0(Native Method) の sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) の sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) の java.lang.reflect.Constructor.newInstance(Constructor.java: 526) java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran .spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で ch.qos.logback.core.joran.spi.Interpreter .startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance0(Native Method) の sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) の sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) の java.lang.reflect.Constructor.newInstance(Constructor.java: 526) java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran .spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で ch.qos.logback.core.joran.spi.Interpreter .startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance(NativeConstructorAccessorImpl.java:57) で sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) で java.lang.reflect.Constructor.newInstance(Constructor.java:526) で java.lang.Class.newInstance(Class .java:379) ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で) ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) で ch. qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance(NativeConstructorAccessorImpl.java:57) で sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) で java.lang.reflect.Constructor.newInstance(Constructor.java:526) で java.lang.Class.newInstance(Class .java:379) ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で) ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) で ch. qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance(DelegatingConstructorAccessorImpl.java:45) で java.lang.reflect.Constructor.newInstance(Constructor.java:526) で java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran .action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) の .startElement(Interpreter.java:148) ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer) .java:50)newInstance(DelegatingConstructorAccessorImpl.java:45) で java.lang.reflect.Constructor.newInstance(Constructor.java:526) で java.lang.Class.newInstance(Class.java:379) で ch.qos.logback.core.joran .action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) で ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) の .startElement(Interpreter.java:148) ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer) .java:50)122) ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)122) ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) で ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) で.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)
ハンドルバーから推移的な依存関係として slf4j を除外しようとしましたが、役に立ちませんでした。
助けてくれてありがとう。詳細が必要な場合はお知らせください。
handlebars.js - Handlebar.java : #if ヘルパーで等価性を比較する
Handlebars.java で等価条件とその他の論理条件を比較するにはどうすればよいですか。例えば:
ありまたはなしのソリューションregisterHelper()
は大歓迎です。
java - FileNotFoundException Sparkjava での HandlebarsTemplateEngine の使用
スパークに問題があります。ビュー「base.hbs」をロードしようとしていますが、ロードしようとするたびにスパークが FileNotFoundException をスローします
コンストラクターを new HandlebarsTemplateEngine("tried/different/paths/here"); に変更してみました。しかし運がない。リソースフォルダーをC:/ドライブに配置して外部からロードしようとしましたが、それでもうまくいきません...
私は通常の組み込み Jetty サーバーを使用していませんが、Tomcat サーバーを使用しています...他の get メソッドが機能することを保証できます (文字列を返す場所)
大変助かりました、ありがとうございました。
コード:
フォルダ構造:
例外:
handlebars.js - ハンドルバーは json をレンダリングしません
プル元の JSON:
繰り返し
ただし、{{this}}
表示のみ、{"email":"testcompany@company.com","company_number":"09999999","company_name":"Name_123","full_name":"test","phone_number":"xyz"}
または{"email":"testtwo@company.com","company_number":"09999999","company_name":"Name_123","full_name":"test","phone_number":"xyz"}
他のすべては表示されません。
何か不足していますか?
java - Handlebars.java のデフォルトのエスケープを変更できますか?
デフォルトの Handlebars expand を持つテンプレートがあります{{thing}}
。
さまざまな厄介な理由から、JSON をレンダリングするためにそれを使用したいので、に付属するデフォルトの HTML エスケープを行いません{{
。
また、HTML コンテキストでテンプレートを使用したいと思います。
異なるデフォルトのエスケープ動作で Handlebars.java インスタンスをセットアップできますか?