`
schy_hqh
  • 浏览: 552560 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(三)play之快速演示篇

 
阅读更多

 运行play

E:\technology-hqh\proj\play-framework>play

创建新项目

E:\technology-hqh\proj\play-framework>play new tasks

~ What is the application name? [tasks] Tasks 

启动play

E:\technology-hqh\proj\play-framework>play run tasks

转换为eclipse工程项目

E:\technology-hqh\proj\play-framework>play eclipsify tasks

 

引入到Eclipse中,开始开发

=============================================================================

示例一

修改tasks\app\views\Application\index.html

删除#{welcome /},改为"Hello World"

#{extends 'main.html' /}
#{set title:'Home' /}

Hello World

 刷新页面

 


============================================================================= 

示例二、

修改tasks\app\controllers\Application.java

package controllers;

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

import java.util.*;

import models.*;

public class Application extends Controller {

    public static void index() {
    	String name = "play! frame work";
        render(name);
    }

}

 

 修改tasks\app\views\Application\index.html

#{extends 'main.html' /}
#{set title:'Home' /}

Hello ${name}

 刷新页面



 

 =============================================================================

示例三、

创建model

package models;

import javax.persistence.Entity;

import play.db.jpa.Model;

@Entity
public class Task extends Model {
	public String title;
	public boolean done;
	
	public Task(String title) {
		this.title = title;
	}
	
	
}

 修改tasks\app\views\Application\index.html

#{extends 'main.html' /}
#{set title:'Home' /}

#{ifnot tasks}
	<p>
		No tasks.
	</p>
#{/ifnot}

<ul>
	#{list items:tasks,as:'task'}
		<li>
			<input type="checkbox" id="${task.id}" ${task.done ? 'checked' : ''}>
			${task.title}		
		</li>
	#{/list}
</ul>

 设置database

# Database configuration
# ~~~~~ 
# Enable a database engine if needed.
#
# To quickly set up a development database, use either:
#   - mem : for a transient in memory database (H2 in memory)
#   - fs  : for a simple file written database (H2 file stored)
db=mem

 

刷新页面


 使用jQuery创建task

#{extends 'main.html' /}
#{set title:'Home' /}

#{ifnot tasks}
	<p>
		No tasks.
	</p>
#{/ifnot}

<ul>
	#{list items:tasks,as:'task'}
		<li>
			<input type="checkbox" id="${task.id}" ${task.done ? 'checked' : ''}>
			${task.title}		
		</li>
	#{/list}
</ul>


<p>
	<a id="createTask" href="#">Create a new task</a>
</p>

<script type="text/javascript" charset="utf-8">
 //Create a task
 $("#createTask").click(function(){
    $.post("@{createTask()}", {title: prompt("Task title ?")});
 });
</script>

 刷新页面



 创建action

 

package controllers;

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

import java.util.*;

import models.*;

public class Application extends Controller {

    public static void index() {
    	List tasks = Task.find("order by id desc").fetch();
        render(tasks);
    }
    
    //创建新的任务
    public static void createTask(String title) {
    	Task task = new Task(title).save();
    	renderJSON(task);
    }

}

 刷新页面,点击链接创建任务



 刷新页面



 进一步优化,使用jQuery的callback回调功能,在添加task后自动显示添加的内容

<script type="text/javascript" charset="utf-8">
	//Create a task
	$("#createTask").click(function(){
		$.post("@{createTask()}", {title: prompt("Task title ?")}, function(task){
			$("ul").prepend(
				'<li><input type="checkbox" id="'+task.id+'"/>'+task.title+'</li>'
			);
		},"json");
	});
</script>

 

不用刷新页面即可显示新的内容

 

点击任务就实现与数据库的同步更新操作

继续使用jQuery开发

<script type="text/javascript" charset="utf-8">
	//Create a task
	$("#createTask").click(function(){
		$.post("@{createTask()}", {title: prompt("Task title ?")}, function(task){
			$("ul").prepend(
				'<li><input type="checkbox" id="'+task.id+'"/>'+task.title+'</li>'
			);
		},"json");
	});
	
	//Change status
	$(":checkbox").live("click",function(){
		$.post("@{changeStatus()}", {id: $(this).attr("id"), done: $(this).val()})
	})
</script>

 Controller中增加新的action:changeStatus()

package controllers;

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

import java.util.*;

import models.*;

public class Application extends Controller {

    public static void index() {
    	List tasks = Task.find("order by id desc").fetch();
        render(tasks);
    }
    
    //创建新的任务
    public static void createTask(String title) {
    	Task task = new Task(title).save();
    	renderJSON(task);
    }
    
   //页面点击checkbox框的动作,触发一个ajax请求
   public static void changeStatus(Long id, boolean done) {
	   Task task = Task.findById(id);
	   task.done = done;
	   //后台更新数据库 
	   task.save();
	   //以json数据格式返回新对象
	   renderJSON(task);
   }
}

 

=================================================================================

示例四、

允许CRUD模块

修改tasks\conf\dependencies.yml

为了能使用CRUD模块,需要在/conf/dependencies.yml文件的require后添加一行代码

# Application dependencies

require:
    - play -> crud

       接下来,在cmd命令行中切换到项目根目录下

E:\technology-hqh\proj\play-framework\tasks>play dependencies

重新构建eclipse项目,以便eclipse能够将新的模块导入到workspace中

E:\technology-hqh\proj\play-framework\tasks>play eclipsify

刷新eclipse工程中的项目

最后,修改tasks\conf\routes,增加路由

GET     /admin			Tasks.list

 

编写CRUD的子类,目的在于继承CRUD中的众多方法,比如list()

package controllers;

public class Tasks extends CRUD {

}

 访问http://localhost:9000/admin,将自动导航至Task对象的编辑页面



 

在Task中添加toString(),则可以定制页面显示Task对象的方式

package models;

import javax.persistence.Entity;

import play.db.jpa.Model;

@Entity
public class Task extends Model {
	public String title;
	public boolean done;
	
	public Task(String title) {
		this.title = title;
	}

	@Override
	public String toString() {
		return title;
	}
		
}

 刷新页面

将按title显示Task对象



 

点击一个task进入编辑页面,可以对其进行更新操作



 

更新task对象



 

点击save,自动保存并返回首页



 

使用validation对更新时的数据进行校验

修改Task对象,使用@Required对属性进行标注

package models;

import javax.persistence.Entity;
import play.data.validation.Required;
import play.db.jpa.Model;

@Entity
public class Task extends Model {
	
	//title不能为空
	@Required
	public String title;
	public boolean done;
	
	public Task(String title) {
		this.title = title;
	}

	@Override
	public String toString() {
		return title;
	}
		
}

 再次编辑Task 1 对象,删除title,点击save会以红色字体显示Required

填入title,则正常保存!

 

 

  • 大小: 9.8 KB
  • 大小: 10.9 KB
  • 大小: 9.4 KB
  • 大小: 47.9 KB
  • 大小: 59.7 KB
  • 大小: 12.1 KB
  • 大小: 15.4 KB
  • 大小: 44 KB
  • 大小: 40.8 KB
  • 大小: 37.3 KB
  • 大小: 39.5 KB
  • 大小: 47.7 KB
  • 大小: 36.2 KB
分享到:
评论

相关推荐

    mdlaunch:从任何现有的markdown文件快速启动HTML演示文稿

    :play_button: 以mdlaunch生成的幻灯片形式查看此自述文件! mdlaunch可以从任何现有的markdown文件中快速创建HTML幻灯片,而无需进行更改。 因此,您可以从现有笔记/ Wiki / etc中整理演示文稿。 它在后台使用...

    play-multipledb:播放模板使用倍数数据库,

    在Play中使用多个数据库可以帮助我们实现数据的分片、隔离不同服务的数据存储,或者实现读写分离等高级架构模式。 在"play-multipledb"项目中,我们可以看到如何配置和管理多个数据库连接。在Scala中,这通常涉及到...

    大图封面简约扁平化排版通用商务PPT模板.pptx

    它可以用于制作各种商务报告、提案或会议演示,帮助用户快速构建专业且有吸引力的幻灯片。 6. **版权信息** 文件中的"Copyright @2014 XXXXXX All Rights Reserved"表明了版权归属,提醒用户在使用模板时需尊重...

    极简实用PPT模板-12.pptx

    10. Fast Time and Video Play: 这可能涉及到时间管理和视频集成的元素,用户可以利用模板快速创建时间敏感的演示,并嵌入视频内容以增强视觉效果和信息传达。 11. Cinema: 可能是指模板中包含电影或多媒体元素的...

    OfficeSuite Premium 10.4.18597.apk

    通过向左和向右滑动从SONY SMARTWATCH 2/3控制OfficeSuite中的演示文稿在幻灯片之间移动。 使用SONY SMARTBAND管理OfficeSuite演示文稿。 SMARTBAND TALK:使用音量增大/减小来更改幻灯片,点击触摸屏以显示动画。...

    图像查看器 FastStone Image Viewer 7.5 中文多语版.zip

    出的“Slideshow Option”(幻灯演示选项)窗口可以设置“Slide Size”(幻灯尺寸,即屏幕分辨率)、“Auto Play”(自动播放的时间间隔)、“Random”(随机播放)、“Loop”(循环播放)、“Stretch Small Images”(即小于...

    OfficeSuite_Premium_v10.13.24972.apk

    通过向左和向右滑动,可以从SONY SMARTWATCH 2/3控制OfficeSuite中的演示文稿在幻灯片之间移动。 使用SONY SMARTBAND管理OfficeSuite演示文稿。 SMARTBAND TALK:使用上下音量更改幻灯片,点击触摸屏上的以显示...

    PPT滚动字幕制作及与音乐同步技巧.docx

    - 在KMPlayer中,你可以通过Alt+J键快速查看音乐的播放时间(PlayTime),而在Windows Media Player中,你可以通过“文件属性”查看音乐时长。 3. **添加滚动字幕**: - 在最后一张幻灯片上创建文本框并输入文字...

    MobilePushNotification:移动推送通知classstarter项目

    演示文稿幻灯片位于文件Android.pptx中的“实现推送通知”中。 克隆此存储库后,请使用以下步骤导入,构建和运行该项目。 注意:必须在您的设备或仿真器中安装Google Play服务才能运行此项目。 有关其他详细信息,...

    使用flutter打造一款像样的电影类App

    Flutter是由Google推出的,旨在提供高效、快速的移动应用开发解决方案,支持iOS和Android平台。它以其Dart编程语言、丰富的组件库以及热重载功能而受到开发者们的喜爱。 **1. Flutter基础知识** Flutter基于Dart...

    大学计算机基础考试试题[1].pdf

    24. 创建新演示文稿:最快的方式是使用演示文稿内容提示向导,它引导用户快速构建幻灯片结构。 25. 中国公用互联网:简称为ChinaNET,是中国的主干互联网之一。 26. 局域网数据传输速率:通常在10Mbps至1000Mbps...

    精美时尚欧美风PPT模板下载.pptx

    这款模板以其独特的设计风格展现了欧美流行趋势,融合了现代美学和实用功能,旨在帮助用户快速制作出高质量的PPT。 在【标题】中,"YOUR TITLE HERE"的部分是留给用户自定义的地方,可以根据实际演示的主题进行替换...

    2014年版新目标九年级英语Unit3period2_演示文稿(共40张PPT)

    - PPT作为英语教学的重要辅助工具之一,能够直观地向学生展示学习内容,帮助学生更好地理解和掌握知识。 2. **情境创设**: - 通过PPT中的图片、动画等形式,教师可以创建接近真实生活的情境,比如本例中的游乐园...

    黑灰大气模板PPT模板.pptx

    2. **布局设计**:模板中的"YOUR TITLE HERE"部分提示了设计者应根据实际内容自定义标题,确保每个幻灯片都清晰地传达主题。合理布局有助于组织信息,使观众能快速理解每页的重点。 3. **视觉层次**:通过使用不同...

    iphone图片浏览

    此外,iOS系统还支持AirPlay功能,允许你通过Apple TV或其他支持AirPlay的设备将iPhone上的图片无线投屏到大屏幕上。这对于家庭聚会或演示来说非常实用。 为了保护隐私,iPhone还提供了面部识别和密码保护功能。...

    iphone hdmi

    在探讨“iPhone HDMI”的主题时,我们涉及到的是如何将iPhone设备与HDMI接口的显示器、电视或其他外设进行连接,以便于用户可以在更大的屏幕上观看视频、演示幻灯片或玩游戏等。这一技术不仅提升了用户体验,还为...

    屏幕录像专家绿色特别已注册版

    该软件特别适合制作PPT汇报的视频,用户可以在演示文稿的过程中进行录制,将讲解内容与幻灯片演示同步保存为视频,方便后期回放和分享。屏幕录像专家的操作界面可能初次接触时会显得稍显复杂,但深入学习后,你会...

    finch-intro:雀科简介。 代码和幻灯片

    - 与Play Framework相比,Finch更专注于API的构建,而Play则更适合构建完整的Web应用。 - 相比Akka HTTP,Finch提供了一种更加函数式的编程模型,对于函数式编程爱好者来说,它提供了更好的体验。 4. **代码示例*...

    介绍空客发展情况的ppt

    在演示中,课程由多个HTML和CSS定义的幻灯片组成,使用JavaScript进行导航和动画效果。此外,还包含一个弹出窗口的术语词汇表,该词汇表加载XML文件以提供动态内容。这展示了Web技术如何与服务器端技术(如Apache和...

    Pep小学英语五年级下册unit4Alet’slearn教学设计.doc

    3. Consolidation Application(巩固应用):包括快速反应游戏、想做就做和传盒子游戏等互动活动,强化动词短语的记忆和发音,提高学生的反应速度和口语表达能力。 4. Let’s play(趣味操练):通过类似的情境游戏...

Global site tag (gtag.js) - Google Analytics