【开源】 bsf.mvc spingboot的扩展
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(无需配置)实现。
1 /** 2 * sprinboot扩展实现,自动requestmapping(public,返回值为ModelAndView类型/或子类)的方法 3 */ 4 public class SpringMvcDemoController extends SpringMvcController { 5 public ModelAndView index(Integer a,String b) 6 { 7 return this.pageVisit(m->{ 8 //分页控件实现说明 9 new Pager1(1,20).setPageSize(10).out(); 10 }); 11 } 12 13 14 public ModelAndView index2() 15 { 16 return new ModelAndView(); 17 } 18 }
application.properties 文件中配置,加快自动映射启动速度。
#bsf.mvc自动requestmapping注入的包路径,逗号分割多个
bsf.mvcpackage=com.bsf.mvc.webdemo.controller
2. freemarker java扩展实现,使freemarker更加便于使用。
freemarker页面
1 2 3 4 | ${Html.s("pagetitle","编辑分类")} ${Html.g("pagetitle")} ${Html.p(model.createtime)} ${Html.w(c.selected,"selected='selected'","")} |
后台代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | /** * 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
1 2 3 4 5 6 7 8 9 10 | <#macro _pager formid="searchForm"> ${pagehtml!} < script type="text/javascript">< br > //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的写法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | /** * 扩展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); } } |
开源是一种态度,分享是一种精神,学习仍需坚持,进步仍需努力,.net生态圈因你我更加美好。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架