[解決済み] Thymeleaf: Concatenation - 式としてパースできませんでした。
2023-02-03 14:35:43
質問
テンプレートで複数の値を連結しようとすると、問題が発生します。 Thymeleafによると はここで を単純に+することができるはずなのですが...。
4.6 テキストを連結する
テキストは、それがリテラルであろうと、変数やメッセージ式の評価結果であろうと、+演算子を使って簡単に連結することができます。 式を評価した結果であろうと、+演算子を使って簡単に連結することができます。
th:text="'The name of the user is ' + ${user.name}"
以下は、私が見つけた動作の例です。
<p th:text="${bean.field} + '!'">Static content</p>
しかし、これはそうではありません。
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
論理的にはうまくいくはずなのですが、うまくいきません。
Mavenを使用しています。
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
<version>2.0.16</version>
<scope>compile</scope>
</dependency>
TemplateEngineとTemplateResolverの設定はこんな感じです。
<!-- Spring config -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ClassLoaderTemplateResolver">
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="order" value="1"/>
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
<property name="templateResolver" ref="fileTemplateResolver"/>
<property name="templateResolvers">
<list>
<ref bean="templateResolver"/>
</list>
</property>
ThymeleafTemplatingServiceです。
@Autowired private TemplateEngine templateEngine;
.....
String responseText = this.templateEngine.process(templateBean.getTemplateName(), templateBean.getContext());
AbstractTemplate.javaです。
public abstract class AbstractTemplate {
private final String templateName;
public AbstractTemplate(String templateName){
this.templateName=templateName;
}
public String getTemplateName() {
return templateName;
}
protected abstract HashMap<String, ?> getVariables();
public Context getContext(){
Context context = new Context();
for(Entry<String, ?> entry : getVariables().entrySet()){
context.setVariable(entry.getKey(), entry.getValue());
}
return context;
}
}
どのように解決するのですか?
しかし、私が見たところ、あなたは構文で非常に単純なエラーを持っています。
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
のようにすると、正しい構文は次のようになります。
<p th:text="${bean.field + '!' + bean.field}">Static content</p>
実のところ、構文
th:text="'static part' + ${bean.field}"
と同じです。
th:text="${'static part' + bean.field}"
.
試しに使ってみてください。6ヶ月経った今、これはある意味無駄なことかもしれないけれども。
関連
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
Javaジェネリックを1つの記事で
-
代入の左辺は変数でなければならない 解答
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
アクセス制限の解決方法: ---- in Java
-
テストが空であるかどうかを判断するためのオプションの処理
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Java の toString() における StringBuilder と文字列連結の比較
-
[解決済み] 文字列の連結:concat()と "+"演算子の比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
Javaジェネリックを1つの記事で
-
Junitのユニットテストはjava.lang.Testを報告します。
-
セミコロン期待値エラー解決
-
java send https request prompt java.security.cert.について。
-
API の戻り値を処理するために ResponseEntity を使用する
-
コンストラクタDate()が未定義である問題
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
アクセス制限の解決方法: ---- in Java
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.