Solon Web 开发,七、视图模板与Mvc注解
1、Solon的MVC注解
主要注解:
| 注解 | 说明 | 
|---|---|
| @Controller | 控制器注解(只有一个注解,会自动通过不同的返回值做不同的处理) | 
| @Param | 请求参数注解(一般用不到,会自动处理) | 
| @Body | 请求主体注解(一般用不到,会自动处理) | 
| @Mapping | 路由关系印射注解 | 
| @Get | @Mapping 的辅助注解,便于 RESTful 开发 | 
| @Post | @Mapping 的辅助注解,便于 RESTful 开发 | 
| @Put | @Mapping 的辅助注解,便于 RESTful 开发 | 
| @Delete | @Mapping 的辅助注解,便于 RESTful 开发 | 
| @Patch | @Mapping 的辅助注解,便于 RESTful 开发 | 
组合效果:
@Controller
public class DemoController{
    @Get
    @Mapping("/test1/")
    public void test1(){
        //没返回
    }
    @Get
    @Mapping("/test2/")
    public String test2(){
        return "返回字符串并输出";
    }
    @Mapping("/test3/")
    public UseModel test3(@Param(defaultValue="world") String name){ //接收请求name参数
        //返回个模型,默认会渲染为json格式输出
        return new UseModel(2, name);
    }
    @Mapping("/test4/{qb_dp}")
    public ModelAndView test4(String qb_dp, @Body String bodyStr){//接收路径变量和主体字符串
        //返回模型与视图,会被视图引擎渲染后再输出,默认是html格式
        Map<String,String> map = new HashMap<>();
        map.put("name", qb_dp);
        map.put("body", bodyStr);
        return new ModelAndView("view path", map);
    }
}
2、视图模板开发,支持6种视图模板引擎,可同时共用
| 模板引擎 | 适配的渲染器 | 默认视图后缀名 | 
|---|---|---|
| freemarker | FreemarkerRender | .ftl | 
| jsp | JspRender | .jsp | 
| velocity | VelocityRender | .vm | 
| thymeleaf | ThymeleafRender | .html | 
| enjoy | EnjoyRender | .shtm | 
| beetl | BeetlRender | .htm | 
以 freemaerker 视图为例,helloworld.ftl
<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>${title}</title>
</head>
<body>
<div>
     ${message}
</div>
</body>
</html>
控制器
@Controller
public class HelloworldController {
    @Mapping("/helloworld")
    public Object helloworld(){
        ModelAndView vm = new ModelAndView("helloworld.ftl");
        vm.put("title","demo");
        vm.put("message","hello world!");
        return vm;
    }
}
3、模板调试模式(即:模板修改后,浏览器刷新即可)
//调试模式:
启动参数添加:-deubg=1 或 --deubg=1
4、在模板中使用认证标签
以 freemaerker 视图为例:
<@authPermissions name="user:del">
我有user:del权限
</@authPermissions>
<@authRoles name="admin">
我有admin角色
</@authRoles>
5、在模板中使用国际化接口
以 freemaerker 视图为例:
<div>
i18n::${i18n["login.title"]}
i18n::${i18n.get("login.title")}
i18n::${i18n.getAndFormat("login.title",12,"a")}
</div>
具体内容可参考 国际化的章节。
Solon Web 开发,七、视图模板与Mvc注解的更多相关文章
- Solon Web 开发
		Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ... 
- Solon Web 开发,一、开始
		Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ... 
- Solon Web 开发,二、开发知识准备
		Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ... 
- Solon Web 开发,四、请求上下文
		Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ... 
- Solon Web 开发,五、数据访问、事务与缓存应用
		Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ... 
- Solon Web 开发,六、过滤器、处理、拦截器
		Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ... 
- Solon Web 开发,八、校验、及定制与扩展
		Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ... 
- Solon Web 开发,九、跨域处理
		Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ... 
- Solon Web 开发,十一、国际化
		Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ... 
随机推荐
- .NET 云原生架构师训练营(系统架构)--学习笔记
			目录 对外展现的功能 内部功能 功能交互与价值通路 系统架构 目标 认识系统的价值通路 认识功能架构,通过把功能结构与形式结构结合来描述系统架构 受益原则 好的架构必须使人受益,要想把架构做好,就要专 ... 
- vim 默认配置
			vim ~/.vimrc 然后输入常用的需要用的命令,然后保存,这个每次启动VIM都会自动配置.当然你也可以在VIM里面按":"之后输入如下命令,但是下次启动之后设置就会丢失了. ... 
- fcntl 加锁模块
			#!/usr/bin/python # coding:utf8 import os import sys import time import fcntl # 导入模块 class FLOCK(obj ... 
- Data truncation: Truncated incorrect DOUBLE value错误的解决方案
			Data truncation: Truncated incorrect DOUBLE value错误的解决方案: 当在修改某条单位记录时,发生了Data truncation: Truncated ... 
- TURN协议(RFC5766详解)
			如果一台主机处于NAT后面,那么在一定条件下两台主机无法之间进行通讯.在这种条件下,那么使用中继服务提供通讯是有必要的. 这个规范定义了一个名为TURN(使用中继穿越NAT)的协议,它允许一台主机使用 ... 
- JAVA整合FlinkCDC 监控数据库表变化
			版本至少jdk8 maven <!-- https://mvnrepository.com/artifact/com.alibaba.ververica/flink-connector-mysq ... 
- 【LeetCode】1021. Best Sightseeing Pair 最佳观光组合(Python)
			作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ... 
- Co-prime(hdu4135)
			Co-prime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ... 
- python学习第六天:python基础(dict、set)
			dict dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度 创建&取值 为什么dict查找速度这么快? 因为 ... 
- Dubbo 的设计思想
			在java远程调用多年的沉淀 <1>首先是socket调用.在orderService中开放socket服务,在userService中进行远程调用. 优点:解决了单机调用的问题. 缺点: ... 
