2017-11-17 13 views
1

私はSpring Bootで新しくなっており、Spring Boot 2とThymeleaf 3をテンプレートエンジンとして使用して、古いPHPアプリケーションをJavaで書き直したいと考えています。Spring BootとThymeleafのヘルパーを表示

従来のアプリには何千ものフォームがあり、何千もの入力フィールドがあります。このために、単純なテンプレートヘルパーを使用して、入力フィールド、ラベル、コンテナdivを簡単にレンダリングします。小さな例:

FormBuilder::addInputField("Close","close_time",$data->getClose_time()); 

が生成:

<tr> 
    <th>Close:</th> 
    <td><input type="text" name="close_time" id="close_time_id" size="30" value=""> </td> 
</tr> 

どのように私は春とThymeleafでこれを達成することができますか?

+0

はい、私たちはThymeleaf V3を使用します。 – Vmxes

答えて

2

オプション1. Thymeleafフラグメント

formBuilder.html

<!DOCTYPE html> 
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 

<tr th:fragment="inputField (title, name, value)"> 
    <th th:text="${title}"> or can use [[${title}]]</th> 
    <td><input type="text" th:name="${name}" 
       id="close_time_id" size="30" th:value="${value}"> </td> 
</tr> 
</body> 
</html> 

、その後、あなたの主なレイアウトで、あなたは

<body> 
<table> 
    <tbody> 
    <tr th:replace="formBuilder::inputField ('Close','close_time', ${value})"></tr> 
    </tbody> 
</table> 
</body> 

オプション2.を使用することができます豆豆サービス

Thymeleafは、たとえば、@beanName構文(more info)と、Springアプリケーションコンテキストで登録された豆にアクセスすることができます:

<div th:text="${@formBuilder.addInputField('Close','close_time')}">...</div> 
+0

両方のオプションが動作します、ありがとう! 私がもう一度認識したことは、置き換えられているのはフラグメントだけで、Beanサービスでは動作していないようです。 Beanサービスでは、次のような形式で使用できますか?replace?出力のホルダー要素を削除することを意味しますか?したがって、上記の例では、holderのdivタグにBeanサービスの出力だけを指定する必要はありません。 – Vmxes

+0

@Vmxesはホルダータグ – varren

+0

を削除するために 'th:remove =" tag "'を使用するか、http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#expression-inlining 'タグなしの[[$ {@ formBuilder.addInputField( 'Close'、 'close_time')]]] ' – varren

関連する問題