前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javafx框架tornadofx演示jfinal enjoy模板引擎支持动态参数又可调用子模板中的函数

javafx框架tornadofx演示jfinal enjoy模板引擎支持动态参数又可调用子模板中的函数

原创
作者头像
用户6167008
修改2020-03-06 18:51:11
1.5K0
修改2020-03-06 18:51:11
举报

首先根据https://www.jfinal.com/share/1991

新建类 MyRenderDirective

新建index.html

代码语言:txt
复制
#myRender(layoutPath)
#@layout()

#define content()
显示#(layoutPath)
#end

新建layout.html

代码语言:txt
复制
#define layout()
i am <span style="color:red">layout.html</span>

<br>
<br>
#@content()
#end

新建layout1.htm

代码语言:txt
复制
#define layout()
i am <span style="color:blue">layout1.html</span>

<br>
<br>
#@content()
#end

新建layout2.htm

代码语言:txt
复制
#define layout()
i am <span style="color:red">layout2.html</span>

<br>
<br>
#@content()
#end

GUI:

代码语言:txt
复制
import com.jfinal.kit.Kv
import com.jfinal.kit.StrKit
import com.jfinal.template.Engine
import javafx.scene.web.WebEngine
import tornadofx.*
import java.util.*

class MainView : View("像#render指令一样可以动态参数又支持调用子模板中的函数") {
    lateinit var webEngine: WebEngine
    val kv = Kv.create()
    val str = stringProperty()
    override val root = borderpane {
        center = vbox(5) {
            webview {
                webEngine = engine
            }
        }
        top = hbox(10) {
            button("render layout.html") {
                action {
                    loadtmp("layout","index")
                }
            }
            button("render layout1.html") {
                action {
                    loadtmp("layout1","index")
                }
            }
            button("render layout2.html") {
                action {
                    loadtmp("layout2","index")
                }
            }

            button("case1 layout1") {
                action {
                    loadtmp("case1Layout1","case1Index")
                }
            }
            button("case1 layout2") {
                action {
                    loadtmp("case1Layout2","case1Index")
                }
            }
        }
        left {}
        bottom {}


        setPrefSize(1000.0, 500.0)
        paddingAll = 10.0
        style {
            fontSize = 16.px
        }
    }

    private fun loadtmp(layout:String,index:String){
        kv.put("layoutPath", resources.url("/${layout}.html").file)

        str.value = engine.getTemplateByString(resources.text("/${index}.html")).renderToString(kv)
        webEngine.loadContent(str.value)

    }
    
    init {
    // 添加处定义指令
        engine.addDirective("myRender", MyRenderDirective().javaClass)
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档