Play Framework 完整实现一个APP(九)

添加增删改查操作

1.开启CRUD Module

/conf/application.conf 中添加

# Import the crud module
module.crud=${play.path}/modules/crud

  

/conf/routes 中添加

# Import CRUD routes
*      /admin              module:crud

  

需要重启Server,导入CRUD Module

2.添加控制器

/app/controllers

import play.*;
import play.mvc.*;

public class Posts extends CRUD {
}

public class Tags extends CRUD {
}

public class Users extends CRUD {
}

public class Comments extends CRUD {
}

可能会提示错误: CRUD 无法解析为类型 并且运行程序会提示错误

解决办法:

修改 conf/dependencies.yml

require:
    - play
    - play -> crud

  

运行Shell

> play dependencies

  

工程下会生成 modules/crud 文件,重新启动工程即可,但是编译还是会出错,可能是没有引用crud工程的原因

3.创建Controller

package controllers;

import models.User;

@CRUD.For(User.class)
public class AdminUsers extends CRUD {

}

4.修改Model,添加验证

以User为例

public class User extends Model {
    @Email
    @Required
    public String email;

    @Required
    @Password
    public String password;

    public String fullname;
    public String isAdmin;

    public String toString() {
        return email;
    }
}

进入http://localhost:9000/admin/  选择add user进入 User Form进行测试

public class Post extends Model {
    @Required
    public String title;

    @Required
    public Date postedAt;

    @Lob
    @Required
    @MaxSize(10000)
    public String content;

    @Required
    @ManyToOne
    public User author;

    @OneToMany(mappedBy = "post", cascade = CascadeType.ALL)
    public List<Comment> comments;

    @ManyToMany(cascade = CascadeType.PERSIST)
    public Set<Tag> tags;
}
public class Tag extends Model implements Comparable<Tag> {

    @Required
        public String name;
}
public class Comment extends Model {
    @Required
    public String author;

    @Required
    public Date postedAt;

    @Lob
    @Required
        @MaxSize(10000)
    public String content;

    @ManyToOne
    @Required
    public Post post;
}

5.页面上显示的Label名字是小写,与对应类的字段名一致,如果想显示大写,可以修改/conf/messages

title=Title
content=Content
postedAt=Posted at
author=Author
post=Related post
tags=Tags set
name=Common name
email=Email
password=Password
fullname=Full name
isAdmin=User is admin

  

。。

时间: 2024-08-10 06:49:57

Play Framework 完整实现一个APP(九)的相关文章

Play Framework 完整实现一个APP(二)

1.开发DataModel 在app\moders 下新建User.java package models; import java.util.*; import javax.persistence.*; import play.db.jpa.*; @Entity public class User extends Model { public String email; public String password; public String fullname; public String

Play Framework 完整实现一个APP(十一)

添加权限控制 1.导入Secure module,该模块提供了一个controllers.Secure控制器. /conf/application.conf # Import the secure module module.secure=${play.path}/modules/secure /conf/routes # Import Secure routes * / module:secure 2.在Post Comment User Tag控制器上添加标签 @With(Secure.cl

Play Framework 完整实现一个APP(十四)

添加测试 ApplicationTest.java @Test public void testAdminSecurity() { Response response = GET("/admin"); assertStatus(302, response); assertHeaderEquals("Location", "http://localhost/login", response); } 更多测试介绍 http://play-framew

Play Framework 完整实现一个APP(十三)

添加用户编辑区 1.修改Admin.index() public static void index() { List<Post> posts = Post.find("author.email", Security.connected()).fetch(); render(posts); } 2.修改页面 app/views/Admin/index.html #{extends 'admin.html' /} <h3>Welcome ${user}, <

Play Framework 完整实现一个APP(八)

创建Tag标签 1.创建Model @Entity @Table(name = "blog_tag") public class Tag extends Model implements Comparable<Tag> { public String name; private Tag(String name) { this.name = name; } public String toString() { return name; } public int compare

一个App项目设计开发完整流程

作为一个PHP程序猿想转行APP开发可不是件容易的事情,话说隔行如隔山,这隔着一层语言也是多东西需要学习啊,一直对APP开发很感兴趣,最近请教了几个做移动开发的朋友,看了很多的资料,决定把自己学到的东西总结一下分享给和我一样刚做开发的菜鸟们. 1. idea形成——APP项目雏形 一个APP项目的最初首先要确定项目整体方案,整个项目的规划,大体框架,做成文档展现出来,以便大家提意见和更好的改进.也就是说首先要确立产品原型,进入项目评估阶段.经过反复确认,最终形成产品脑图和完整的需求文档. 2.功

论一个APP从启动到主页面显示经历的过程?

前言 (个人观点.不喜勿喷) 本部分内容是关于Android进阶的一些知识总结,涉及到的知识点比较杂,不过都 是面试中几乎常问的知识点,也是加分的点. 关于这部分内容,可能需要有一些具体的项目实践.在面试的过程中,结合具体自 身实践经历,才能更加深入透彻的描绘出来. (顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找)https://github.com/xiangjiana/Android-MS 一.流程概述 启动流程: ① 点击桌面App图标,Launcher进程采用Binde

如何使用viewpager与fragment写一个app导航activity

今天我们来看一下如何使用viewpager和fragment组合来写一个app导航activity,这里使用到了android开源控件viewpagerindicator,有兴趣的同学可以去它网站上看看它的介绍. 附上效果截图一张: demo中只有一个activity,是用activity_main.xml来布局,其内容如下: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:and

学习方法和阶段介绍 、 iOS界面开发引入 、 构造第一个App 、 视图控制器和视图 、 控件与事件 、 InterfaceBuilder

1 创建并运行第一个App 1.1 问题 使用Xcode创建一个App项目,该应用实现功能在界面上显示Hello World标签,在模拟器中的运行结果如图-1所示: 图-1 1.2 方案 分析图-1,首先使用Xcode创建一个Single ViewApplicaton应用,起名为MyFirstApp,如图-2所示: 图-2 然后删除Xcode的导航栏里只保留TRAppDelegate.h文件和TRAppDelageat.m文件,其他代码文件.storyboard文件以及xib文件删除,如图-3所