Fetch the repository succeeded.
This action will force synchronization from JFinal/JFinal, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 ;)
JFinal 极速开发QQ群欢迎您的加入: 283446146、222478625、326297041、196337924
以下是JFinal实现Blog管理的示例:
1. 控制器(支持FreeMarker、JSP、Velocity、JSON等等以及自定义视图渲染)
@Before(BlogInterceptor.class) public class BlogController extends Controller { public void index() { setAttr("blogList", Blog.dao.find("select * from blog")); } public void add() { } @Before(BlogValidator.class) public void save() { getModel(Blog.class).save(); } public void edit() { setAttr("blog", Blog.dao.findById(getParaToInt())); } @Before(BlogValidator.class) public void update() { getModel(Blog.class).update(); } public void delete() { Blog.dao.deleteById(getParaToInt()); } }
2.Model(无xml、无annotaion、无attribute、无getter、无setter、new Blog()这行代码也不是必须)
public class Blog extends Model { public static final Blog dao = new Blog(); }
3.Validator(API引导式校验,比xml校验方便N倍,有代码检查不易出错)
public class BlogValidator extends Validator { protected void validate(Controller controller) { validateRequiredString("blog.title", "titleMsg", "请输入Blog标题!"); validateRequiredString("blog.content", "contentMsg", "请输入Blog内容!"); } protected void handleError(Controller controller) { controller.keepModel(Blog.class); } }
4.拦截器(在此demo中仅为示例,本demo不需要此拦截器)
public class BlogInterceptor implements Interceptor { public void intercept(ActionInvocation ai) { System.out.println("Before invoking " + ai.getActionKey()); ai.invoke(); System.out.println("After invoking " + ai.getActionKey()); } }
支付宝捐助:https://me.alipay.com/jfinal 捐助将用于社区建设与发展
Sign in to post a comment
Repository Comments ( 0 )