分享一個今天看到的示例:JFinal實現Blog管理

如下是JFinal實現Blog管理的示例: 學習

1:控制器(支持FreeMarker、JSP、Velocity、JSON等等以及自定義視圖渲染) ui

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
@Before(BlogInterceptor.class)
public class BlogController extends Controller {
    public void index() {
        setAttr("blogList", Blog.me.find("select * from blog"));
    }
 
    public void add() {
    }
     
    @Before(BlogValidator.class)
    public void save() {
        getModel(Blog.class).save();
    }
     
    public void edit() {
        setAttr("blog", Blog.me.findById(getParaToInt()));
    }
     
    @Before(BlogValidator.class)
    public void update() {
        getModel(Blog.class).update();
    }
     
    public void delete() {
        Blog.me.deleteById(getParaToInt());
    }
}

2:Model(無xml、無annotation、無attribute、無getter、無setter、new Blog()這行代碼也不是必須) spa

1
2
3
public class Blog extends Model {
    public static final Blog me = new Blog();
}

3:Validator(API引導式校驗,比xml校驗方便N倍,有代碼檢查不易出錯) xml

1
2
3
4
5
6
7
8
9
10
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不須要此攔截器) blog

1
2
3
4
5
6
7

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());
    }

} ci

文章轉自e良師益友網學習社區 get

相關文章
相關標籤/搜索