使用Render

Render是Resource类中已经写好的语法糖,当您需要输出东西时直接调用方法即可。目前支持的视图有 Html、Json、Text、FreeMaker、Hbs。这几种都是可以在 Resource 中直接使用的。

需要注意的是 FreeMaker、Hbs 都需要自行引用相应的依赖,Cloudopt Next 并没有附带。更多代码案例可以看GitHub

渲染页面时Render会根据配置文件中的 templates 项的配置,自动读取文件,默认是在 templates 文件夹下。

Text

  1. @GET
  2. fun get() {
  3. renderText("test")
  4. }

Json

  1. @GET
  2. fun get() {
  3. var map = hashMapOf<String, Any>()
  4. map["name"] = "andy"
  5. map["age"] = "18"
  6. renderJson(map)
  7. }

当然也支持 Kotlin 的 DSL 语法。

  1. @GET
  2. fun get() {
  3. @GET
  4. fun get() {
  5. renderJson {
  6. template {
  7. parameters["name"] = name
  8. parameters["age"] = age
  9. }
  10. }
  11. }

渲染页面时不需要强制声明后缀名,如 index.html 不需要加 html。根据渲染器的不同会自动加上后缀名。Next 会自动去配置文件中声明的 templates 文件夹位置去找模板文件,

Html

  1. @GET
  2. fun get() {
  3. renderHtml {
  4. template {
  5. name = "index"
  6. }
  7. }
  8. }

如果需要传递参数的话,可以创建一个 View 对象,将模板文件名和传递的参数放入即可。Next 会自动将 parameters 中的数据传递给模板文件。

Freemarker

  1. @GET
  2. fun get() {
  3. renderFree {
  4. template {
  5. name = "index"
  6. parameters["name"] = name
  7. parameters["age"] = age
  8. }
  9. }
  10. }

Hbs

  1. @GET
  2. fun get() {
  3. renderHbs {
  4. template {
  5. name = "index"
  6. parameters["name"] = name
  7. parameters["age"] = age
  8. }
  9. }
  10. }

创建自己的Render

如果您需要使用 Cloudopt Next 尚未支持的模板引擎,您可以自行编写一个 Render。建议参考 JsonRender

创建好Java类后,在服务器启动前添加进去。

  1. CloudoptServer.addRender("custom",JsonRender())
  1. CloudoptServer.addRender("custom",new JsonRender());

使用时只需要在路由中加上名字调用即可。

  1. render("custom","text")
  1. render("custom","text");

修改默认的Render

默认情况下,如果直接调用render方法,会自动调用JsonRender。如果您需要修改默认的Render,需要调用RenderFactory进行修改。

  1. RenderFactory.setDefaultRender("json")
  1. RenderFactory.INSTANCE.setDefaultRender("json");

静态资源

CSS、JS、图片等静态资源文件是要与模板文件分开的,默认放在static文件夹下,当页面需要引用静态文件时直接引用static文件夹即可。

  1. <link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon"/>