3.5 getBean与getModel系列

  1. getModel用来接收页面表单域传递过来的model对象,表单域名称以”modelName.attrName”方式命名,getModel使用的attrName必须与数据表字段名完全一样。
  2. getBean方法用于支持传统Java Bean,包括支持使用jfinal生成器生成了gettersetter方法的Model,页面表单传参时使用与setter方法相一致的attrName,而非数据表字段名。
  3. getModelgetBean区别在于前者使用数据库表字段名而后者使用与setter方法一致的属性名进行数据注入。建议优先使用getBean方法。
  4. 以下是一个简单的示例:
  1. // 定义Model,在此为Blog
  2. public class Blog extends Model<Blog> {
  3.  
  4. }
  5.  
  6. // 在页面表单中采用modelName.attrName形式为作为表单域的name
  7. <form action="/blog/save" method="post">
  8. <input name="blog.title" type="text">
  9. <input name="blog.content" type="text">
  10. <input value="提交" type="submit">
  11. </form>
  12.  
  13. public class BlogController extends Controller {
  14. public void save() {
  15. // 页面的modelName正好是Blog类名的首字母小写
  16. Blog blog = getModel(Blog.class);
  17.  
  18. // 如果表单域的名称为 "otherName.title"可加上一个参数来获取
  19. blog = getModel(Blog.class, "otherName");
  20. }
  21. }
  1. 上面代码中,表单域采用了 &#34;blog.title&#34;、&#34;blog.content&#34; 作为表单域的name属性,&#34;blog&#34; 是类文件名称 &#34;Blog&#34; 的首字母变小写, &#34;title&#34; blog数据库表的title字段,如果希望表单域使用任意的modelName,只需要在getModel时多添加一个参数来指定,例如:getModel(Blog.class, &#34;otherName&#34;)。

如果希望传参时避免使用modelName前缀,可以使用空串作为modelName来实现:getModel(Blog.class, ""); 这对开发纯API项目非常有用。

  1. 如果希望在接收时跳过数据转换或者属性名错误异常可以传入true参:getBean(…, true)

< 3.4 getPara系列方法

3.6 setAttr方法 >

原文: http://www.jfinal.com/doc/3-5