springboot的扩展实现,让springboot开发更加简单;形成demo模板,以后开发更方便。

开源地址:https://gitee.com/chejiangyi/bsf.mvc/tree/master/

1. 自动requestmapping(无需配置)实现。
2. freemarker java扩展实现,使freemarker更加便于使用。
3. request 参数大小写兼容实现,传入参数不再区分大小写。
date日期参数兼容,支持对象绑定对public字段的自动映射。
4. url 大小写兼容,不敏感。
5. 提供默认分页控件。
6. 支持.net mvc的写法。
1. 自动requestmapping(无需配置)实现。
 /**
* sprinboot扩展实现,自动requestmapping(public,返回值为ModelAndView类型/或子类)的方法
*/
public class SpringMvcDemoController extends SpringMvcController {
public ModelAndView index(Integer a,String b)
{
return this.pageVisit(m->{
//分页控件实现说明
new Pager1(1,20).setPageSize(10).out();
});
} public ModelAndView index2()
{
return new ModelAndView();
}
}
application.properties 文件中配置,加快自动映射启动速度。
#bsf.mvc自动requestmapping注入的包路径,逗号分割多个
bsf.mvcpackage=com.bsf.mvc.webdemo.controller

2. freemarker java扩展实现,使freemarker更加便于使用。
freemarker页面
${Html.s("pagetitle","编辑分类")}
${Html.g("pagetitle")}
${Html.p(model.createtime)}
${Html.w(c.selected,"selected='selected'","")}

后台代码

/**
* TemplateProvider 缩写简写扩展,方便页面模板里面使用
可以被继承,不断扩展
*/
public class SimpleTemplateProvider extends TemplateProvider {
/**
* getattr方法 缩写
*/
public Object g(String key) {
return getattr(key);
} /**
* setattr方法 缩写
*/
public void s(String key, Object value) {
setattr(key, value);
} /**
* where 简写
*/
public Object w(boolean istrue, Object trueObj, Object falseObj) {
return where(istrue, trueObj, falseObj);
} /**
* print 缩写
*/
public String p(Object o) {
return print(o);
}
}

5. 提供默认分页控件。

freemaker

<#macro _pager formid="searchForm">
${pagehtml!}
<script type="text/javascript">
  //js分页回调
function pagerfunction(pageindex) {
$("#${formid}").prepend("<input type='hidden' name='pageindex' value='"+pageindex+"'/>");
$("#${formid}").prepend("<input type='hidden' name='pagesize' value='"+'${pagesize!}'+"'/>");
$("#${formid}").submit();
}
</script>
</#macro>

后台代码

new Pager1(pageindex,count).setPageSize(10).out();

6. 支持.net mvc的写法。

/**
* 扩展springboot 模拟.net mvc的写法
* 需要继承 NetController
*/
public class NetMvcDemoController extends NetMvcController {
public ActionResult index(Integer a,String b)
{
//分页控件实现说明
new Pager1(1,20).setPageSize(10).out();
return view();
} public ActionResult index2()
{
List a = new ArrayList<String>();
return view("/netmvcdemo/index2",a);
} public ActionResult json()
{
List a = new ArrayList<String>();
return json(a);
}
}

 

【开源】 bsf.mvc spingboot的扩展的更多相关文章

  1. mvc给html扩展方法:

    mvc给html扩展方法: 注意:扩展方法和所在的类都必须是 public static如果在页面直接使用新扩展的方法,需要web.config里把Web.Helper名称命名空间加上,页面才能访问到 ...

  2. Mvc 分页栏扩展方法

    using System; using System.Collections.Generic; using System.Reflection; using System.Text; using Sy ...

  3. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)

    lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...

  4. MVC 自定义Htmlhelper扩展

    在MVC中,我们不仅可以使用它原来的方法,我们还可以自定义,这不不仅加大了我们开发的效率,同时使界面更简洁. 具体什么是扩展方法,你可以这样理解,必须是静态且在形参中第一个参数是以this开头,大概先 ...

  5. asp.net MVC添加HtmlHelper扩展示例和用法

    一.先创建一个HtmlHelper的扩展类,代码: using System; using System.Collections.Generic; using System.Linq; using S ...

  6. MVC缓存03,扩展方法实现视图缓存

    关于缓存,先前尝试了: ● 在"MVC缓存01,使用控制器缓存或数据层缓存"中,分别在控制器和Data Access Layer实现了缓存 ● 在"MVC缓存02,使用数 ...

  7. ASP.NET MVC Razor HtmlHelper扩展和自定义控件

    先看示例代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using S ...

  8. [Asp.net Mvc]通过UrlHelper扩展为js,css静态文件添加版本号

    写在前面 在app中嵌入h5应用,最头疼的就是缓存的问题,比如你修改了一个样式,或者在js中添加了一个方法,发布之后,并没有更新,加载的仍是缓存里面的内容.这个时候就需要清理缓存才能解决.但又不想让w ...

  9. ASP.NET Core MVC 授权的扩展:自定义 Authorize Attribute 和 IApplicationModelProvide

    一.概述 ASP.NET Core MVC 提供了基于角色( Role ).声明( Chaim ) 和策略 ( Policy ) 等的授权方式.在实际应用中,可能采用部门( Department , ...

随机推荐

  1. mybatis 通过实体类进行查询

    如果使用实体类进行查询, 不管会不会使用到 主键, 都必须设置主键, 才能查询 <select id="selectByAppidAndServerCode" resultM ...

  2. View的getMeasuredWidth和getWidth有什么区别?

    getMeasuredWidth 为view的测量宽度. getWidth为view的最终宽度. (这里只讨论宽度,高度也是一样的道理) 那么它们之间有什么区别呢? 测量宽度是在view的measur ...

  3. js数组的用法以及数组根据下标(数值或字符)移除元素

    1.创建数组var array = new Array();var array = new Array(size);//指定数组的长度var array = new Array(item1,item2 ...

  4. 章节四、3-While循环-DoWhile语句

    一.while死循环 package introduction5; public class WhileDemo { public static void main(String[] args) { ...

  5. IPD咨询如何才能真正落地?

    文/资深顾问 杨学明 IPD作为先进的产品开发理念,思想起源于PRTM公司,PACE,培思的力量,首先在IBM和波音公司迅速完善,中国是深圳华为公司. 1992年IBM公司利润停止增长,财务困难,IB ...

  6. android adb 流程原理代码分析(一)

    由于要用到adb的知识,但是对adb啥也不了解,看了下android的代码,adb的源码在system/core/adb下面,然后网上搜下了资料,发现很多大神的源码分析,瞬间信心爆棚,把大神写的博客都 ...

  7. Java 一些知识点总结

    本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺(阅读本文需要有一定的Java基础).本文的 ...

  8. Scrapy代码实战

    1.Spider爬虫代码 # -*- coding: utf-8 -*- import scrapy from yszd.items import YszdItem class YszdSpiderS ...

  9. 根据标签中动态获取的值绑定特定的class

    数据有mock数据获取 mock文件: index文件: 引入文件index: 获取数据函数: 根据获取的标签内容给定不同的样式:

  10. 我喜欢的vs+va快捷键

    拿到新版的vs,我首先会安装va,然后自定义快捷键.现在有些快捷键被系统占用,可以先remove掉,然后换成自己熟悉的快捷键.需要做到常用快捷键两个按键即可. alt+Q:文件中查询,复杂查询 ctr ...