假设可以这么写代码

假设书写一个网上售书系统,其中一个图书编辑页面,如果可以写成这样,你会怎么感觉?

 1 <HMTL>
 2 <head>
 3 #{title 'BookEdit.Edit'/}
 4 </head>
 5 <body>
 6 #{form action='BookEdit.save()'}
 7     #{EditBar title='book.edit.isbn', text=${Book.isbn} /}
 8     #{EditBar title='book.edit.name', text=${Book.name} /}
 9     #{EditBar title='book.edit.author', text=${Book.author} /}
10     #{EditBar title='book.edit.press', text=${Book.press} /}
11     #{EditBar title='book.edit.price', text=${Book.price} /}
12 #{/form}
13 </body>
14 </HTML>

其中的#{.../}式标签为自定义标签,可以代表很多封装好的内容。相对来说,这样的代码比Jsp代码更为简练,格式对齐更佳。无需设置更多的Javascript。
代码达到更高的复用率。

对应的Book类是这样定义的

 1 public class Book extends Entity {
 2     @Mandatory
 3     @MinLength(10)
 4     @MaxLength(20)
 5     public String isbn;
 6 
 7     @Mandatory
 8     @MinLength(1)
 9     @MaxLength(200)
10     public String name;
11 
12     @Mandatory
13     @MinLength(2)
14     @MaxLength(100)
15     public String author;
16     
17     @Mandatory
18     @MinLength(1)
19     @MaxLength(100)
20     public String press;
21 
22     @Mandatory
23     @Min(0)
24     public float price;
25 }

 

其中的Mandatory表示该字段是必须输入的。如果没有输入,则自动的在html代码中对应的EditBar中显示错误提示消息。

而MinLength,MaxLength,Min则分别代表长度和大小的限制。

对应的BookEdit类则定义为下面的样子

 1 public BookEdit extends Controller {
 2    public void save() {
 3         Book book = getForm().toEntity();
 4         validate(book);
 5         if (hasErrors()) {
 6              edit(book);
 7         }
 8         book.save();
 9         render();
10    }
11 }

其中的Validate是一个标准校验方法,用来校验指定Entity的子类,根据该类的定义Annotation对比实际上得到的值。如果有发现错误,则返回到当前页面,如果没有错误则保存数据,并刷新显示。

和传统的Struts代码相比,如果可以这样写代码,代码将会变得很短,维护将会变得很容易。

那么你是不是很想知道如何才能够做到这样写代码呢?

敬请关注《从码农到架构师》系列。

 

转载于:https://www.cnblogs.com/stephen-wang/archive/2012/11/19/2777087.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值