当前位置: 首页 > 编程日记 > 正文

japid-controller自动绑定的数据类型

参考文献:http://www.playframework.org/documentation/1.2.3/controllers

当参数名和HTTP请求中的参数名(即界面中的name)相同时,后台Controller可以直接获取该变量的值。变量分两大类:

1. Simple types

所有的基本数据类型和一些常用的Java类型可以被自动绑定

int, long, boolean, char, byte, float, double, Integer, Long, Boolean, Char, Byte, Float, Double, String

以上数据类型可以被自动绑定,当参数为丢失时,默认会将变量的值赋为:null或0。

2. Date

当时间对象以一下格式展现时,可以被自动绑定到后台:

  • yyyy-MM-dd'T'hh:mm:ss'Z' //ISO8601 + timezone
  • yyyy-MM-dd'T'hh:mm:ss" //ISO8601
  • yyyy-MM-dd
  • yyyyMMdd'T'hhmmss
  • yyyyMMddhhmmss
  • dd'/'MM'/'yyyy
  • dd-MM-yyyy
  • ddMMyyyy
  • MMddyy
  • MM-dd-yy
  • MM'/'dd'/'yy

引用@As 注释,可以直接定义时间格式。for example:

archives?from=21/12/1980

public static void articlesSince(@As("dd/MM/yyyy") Date from) {

    List<Article> articles = Article.findBy("date >= ?", from);

    render(articles);

  }

另外也可以根据语言来格式化时间。See as follows:

public static void articlesSince(@As(lang={"fr,de","*"}, value={"dd-MM-yyyy","MM-dd-yyyy"}) Date from) {

    List<Article> articles = Article.findBy("date >= ?", from);

    render(articles);

  }

在这个例子中,我们将French和German语言对应的时间格式设置为dd-MM-yyyy和MM-dd-yyyy。需要注意的是,语言必须用都好分隔开,value和lang的个数要匹配。

如果@As注释没写的话,时间会按照默认格式来转化。

3.Calendar

Calendar跟Date类似,它使用的注释是@Bind。

4.Arrays or collections of supported types

所有被支持的类型都可以作以Array的形式被绑定获取到。for example:

public static void show(Long[] id){...}

public static void show(List<Long> id){...}

public static void show(Set<Long> id){...}

Play也支持像是Map<String, String>这样子的特殊例子:

public static void show(Map<String, String> client){...}

在上面的这个例子中,传入的语句如下:

?client.name=John&client.phone=111-1111&client.phone=222-222

此时后台获取到一个map元素,第一个元素的key为name,值为John,第二个元素的key为phone,值为111-1111,222-2222.

5.POJO object binding

play同样支持自动绑定任何model,只要该对象遵守相同的命名规则。for example:

public static void create(Client client){

client.save();

show(client);

}

在页面端,一个保存client的action需要规定如下:

?client.name=Zenexity&client.email=contact&zenexity.fr

play可以创建一个Client对象,并且从HTTP请求中读取相关的属性值赋到Client对象上。一些不能解决/读取的参数会被play安全的忽略掉,类型不匹配也会被自动忽略。

参数绑定也可以递归的进行,只要你列出完整的参数列表:

?client.name=Zenexity

  &client.address.street=64+rue+taitbout

  &client.address.zip=75009

  &client.address.country=France

有时候为了更新对象列表,会使用一个存放了对象id的数组。For example,假设我们已经有了一个Customer的对象列表,声明List Customer customers,为了更新Customers,我们需要提供如下一串String:

  ?client.customers[0].id=123

  &client.customers[1].id=456

  &client.customers[2].id=789

6.JPA object binding

7.File

File upload is easy with Play. Use a multipart/form-data encoded request to post files to the server, and then use the java.io.File type to retrieve the file object:

public static void create(String comment, File attachment) { String s3Key = S3.post(attachment); Document doc = new Document(comment, s3Key); doc.save(); show(doc.id); } 

The created file has the same name as the original file. It’s stored in a temporary directory and deleted at the end of the request. So you have to copy it in a safe directory or it will be lost.

The uploaded file’s MIME type should normally be specified by the HTTP request’s Content-type header. However, when uploading files from a web browser, this might not happen for uncommon types. In this case, you can map the file name’s extension to a MIME type, using the play.libs.MimeTypes class.

String mimeType = MimeTypes.getContentType(attachment.getName()); 

The play.libs.MimeTypes class looks up the MIME type for the given file name’s extension in the file $PLAY_HOME/framework/src/play/libs/mime-types.properties

You can also add your own types using the Custom MIME types configuration.

ps:还没写完,以后再继续。


转载于:https://www.cnblogs.com/timelyxyz/archive/2012/05/18/2323966.html

相关文章:

NAT,Easy IP

R3配置 [V200R003C00] #snmp-agent local-engineid 800007DB03000000000000snmp-agent #clock timezone Indian Standard Time minus 05:13:20clock daylight-saving-time Day Light Saving Time repeating 12:32 9-1 12:32 11-23 00:00 2005 2005 #drop illegal-mac alarm #…

linux用户在哪个文件夹,LINUX中用命令成功建立一个用户后信息会记录在哪个文件中...

LINUX中用命令成功建立一个用户后信息会记录在哪个文件中发布时间:2007-07-28 10:14:57来源:红联作者:MPiops增加用户帐号后新建用户的命令十分简单&#xff0c;在命令行下使用 useradd 命令&#xff1a;useradd david该命令做了下面几件事&#xff1a;1)在 /etc/passwd 文件中…

iOS开发—block介绍

- (void)viewDidLoad {[super viewDidLoad];NSLog("我在玩手机");NSLog("手机没电了");[self chargeMyIphone:^{NSLog("出门逛街");}];NSLog("我在看电视"); }-(void)chargeMyIphone:(void(^)(void))finishBlock {double delayInSecon…

Sap Byd Soap使用 SSL 客户端证书

1.修改通讯安排为使用SSL客户端证书2.设置客户端证书上传证书,或者上传并下载证书3.用SoapUI 测试系统选择下载来的证书,或者自己创建的通讯证书,并输入密码配置好后就可以测试系统了4.关于验证失败.byd 系统 有时候,系统生效会比较慢,如果不行,请等待3分钟,还是不行,从头在试下…

IOS开源项目汇总

扫描wifi信息&#xff1a;http://code.google.com/p/uwecaugmentedrealityproject/http://code.google.com/p/iphone-wireless/ 条形码扫描&#xff1a;http://zbar.sourceforge.net/iphone/sdkdoc/install.html tcp/ip的通讯协议&#xff1a;http://code.google.com/p/cocoaas…

linux命令face,linux下配置face_recognition

1、如linux下已有python2.7,但需要更新一下python 2.7至python2.xsudo add-apt-repository ppa:fkrull/deadsnakes-python2.7sudo apt-getupdatesudo apt-get upgrade2、部署步骤安装Boost, Boost.Pythonsudo apt-get install build-essential cmakesudo apt-get install libgt…

微服务系列(五):事件驱动的数据管理

编者的话&#xff5c;本文来自 Nginx 官方博客&#xff0c;是「Chris Richardson 微服务」系列的第五篇文章。第一篇文章介绍了微服务架构模式&#xff0c;并且讨论了使用微服务的优缺点&#xff1b;第二和第三篇描述了微服务架构模块间通讯的不同方面&#xff1b;第四篇研究了…

js基础知识温习:Javascript中如何模拟私有方法

本文涉及的主题虽然很基础&#xff0c;在很多人眼里属于小伎俩&#xff0c;但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。 公有方法 公有方法就是能被外部访问并调用的方法。 // 在对象中 var R…

格式化测试数据,组装用于插入表中的sql语句

最近闲的蛋疼&#xff0c;每每在写测试例子的时候&#xff0c;万恶的测试数据需要手工书写insert语句的向表中插入&#xff0c;很费事&#xff0c;于是就像写个脚本来实现自动生成插入语句 测试数据&#xff1a; 100 北京 20120203123 100 天津20120203123 101 湖南20120203nul…

linux内核功能有,好消息!LINUX内核2.6.18终于支持实时功能了

LINUX内核2.6.18终于支持实时功能了,这是个好消息。当LINUX实时功能加强后&#xff0c;它在嵌入式系统的应用就会更广泛了。在这一版发布前&#xff0c;为了使嵌入式系统的LINUX具有实时特性&#xff0c;需要给标准和LINUX系统加上具有实时功能的补丁。实际上&#xff0c;就算是…

Asp.Net 构架(HttpModule 介绍)

Http 请求处理流程 和 Http Handler 介绍 这两篇文章里&#xff0c;我们首先了解了Http请求在服务器端的处理流程&#xff0c;随后我们知道Http请求最终会由实现了IHttpHandler接口的类进行处理(应该记得Page类实现了IHttpHandler)。从 Http 请求处理流程 一文的最后的一幅图中…

.net下WinDbg使用说明

加载调试文件 .loadby sos mscorwks #.Net 3.5版本及以下 .loadby sos clr #.Net 4.0 WinDbg的基本命令 !threads #显示所有线程 !dumpheap #显示托管堆的信息 !dumpheap -stat #统计堆栈内存 !clrstack #显示调用栈 !dumpobj #显示一个对象的内容 !dumparray #显示数组…

【系列】EOS开发3 EOS提供的程序和工具

上一篇文章使用了nodeos命令来启动eos服务&#xff0c;这一篇文章&#xff0c;就来介绍一下eos提供的相关程序和工具。 nodeos EOSIO的核心守护进程&#xff0c;它可通过插件配置来启动一个节点。 cleos 这是一个命令行工具&#xff0c;它跟nodeos开放的REST API接口进行交互。…

Linux qgis 编译,QGIS简介与源代码编译

QGIS(http://qgis.org)是一个集成了很多个开源的空间数据处理库的桌面GIS软件&#xff0c;支持Python脚本。QGIS基于QT和SIP进行开发&#xff0c;支持Windows\Linux\MacOS等操作系统&#xff0c;可以访问MySQL/PostGRE等数据库的空间数据&#xff0c;可以连接到OpenstreetMap拉…

一步步写自己SqlHelper类库(五):Command对象

1.Command对象基础 当我们使用Connection对象里面的方法打开数据库后&#xff0c;要查询自己所需的数据或对数据库的内容进行增删改时&#xff0c;Command对象就派上用场了&#xff01; MSDN定义&#xff1a;建立与数据源的连接后&#xff0c;利用Command对象来执行命令并从数据…

MVC-前台调用后台action 传递upload file 参数问题

在后台获取upload file 数量的时候发现count一直为0&#xff0c;经检查发现了问题 &#xff0c;代码如下&#xff1a; 前台&#xff1a; var data $("#DetailForm").serialize(); $.ajax({ url: Url.Action("SaveRequest", "RegistrationRequest&quo…

Storybook 5.0正式发布:有史以来变化最大的版本\n

Storybook 5.0&#xff08;SB5&#xff09;于近日正式发布&#xff0c;这是目前为止最大的一个版本。新版本的内容包括&#xff1a; 全新的开发者体验&#xff1b;带有主题的组件库&#xff1b;改进的前端插件架构&#xff1b;全新的Storybook网站。 Storybook的进展和未来 Sto…

linux6直连存储挂载磁盘,CentOS7mount网络磁盘的详细步骤

在配置前一定先关闭防火墙systemctl disable firewalldsystemctl stop firewalldsystemctl mask firewalld一.修改iscsi客户端的用户名vi /etc/iscsi/initiatorname.iscsiInitiatorName iqn.************&#xff1b;【注&#xff1a;eg&#xff1a;iqn.2017-09.com.centos:cl…

如何将Java源代码文件的编码从GBK转为UTF-8?

有时候看到有意思的demo&#xff0c;在头痛导入项目的编码和workspace的编码不一样的时候 我试着将 笔记本打开一个类一个类的复制&#xff0c; demo的类比较少的时候 可以忍受&#xff0c;demo的类多的时候 除了靠之外 别无办法 今天再找仿ios样式demo的时候 实在受不了乱码&a…

电子书格式怎么在线转换为PDF格式

电子书格式怎么在线转换为PDF格式&#xff0c;现在很多朋友喜欢用PDF格式的电子书&#xff0c;因为其有纸质书的排版和格局&#xff0c;但实际生活中出现的最多的是TXT等格式的电子书&#xff0c;那如何将其进行转换成PDF格式的呢&#xff0c;下面就由小编来告诉大家转换的解决…

设计模式笔记(18)---迭代器模式(行为型)

Gof定义 提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c; 而又不暴露该对象的内部表示。 动机 在软件构建过程中&#xff0c;集合对象内部结构常常变化各异。但对于这些集合对象&#xff0c;我们希望在不暴露其内部结构的同时&#xff0c;可以让外部客户代码透明地访…

linux卸载mpfr,Red Hat Linux在安装gcc时遇到的问题汇总

找到了一个比较老的RedHatlinux&#xff0c;想要装上apachetomcat。由于是在虚拟机中运行&#xff0c;我想先装一个vmware-tools提高性能。但是安装的过程中我发现竟然找不到gcc。于是我就去网上(] http://www.linuxidc.com/Linux/2009-01/18242.htm 与 http://www.linuxidc.co…

【数据结构】某些难理解点

1 typedef char ListData;2 //表示以后可以用ListData来代替char类型3 4 typedef struct node{ //此处node&#xff0c;只在结构体中出现和使用5 ListData data;6 struct node *link;7 }ListNode; //表示将整个结构体命名为ListNode&#xff0c;也就是说…

利用jQuery实现用户名片小动画

我爱撸码&#xff0c;撸码使我感到快乐&#xff01;大家好&#xff0c;我是Counter。下面给大家介绍利用jQuery实现的小动画&#xff0c;非常的简便&#xff0c;如果有原生js操作的话&#xff0c;那么就不止这么多行了。至于CSS&#xff0c;个人觉得&#xff0c;这边CSS布局也蛮…

Linux二进制导出配置文件,Go打包二进制文件的实现

背景众所周知&#xff0c;go语言可打包成目标平台二进制文件是其一大优势&#xff0c;如此go项目在服务器不需要配置go环境和依赖就可跑起来。操作需求&#xff1a;打包部署到centos7笔者打包环境&#xff1a;mac os方法&#xff1a;进入main.go所在目录&#xff0c;输入如下命…

crud springmvc

实体类&#xff1a;Student.java Java代码 package demo.entity; public class Student { private int id; private String name; private String sex; private String address; public int getId() { r…

从 Flutter 的视频渲染到 App 落地经验

3月23日周六&#xff0c;由 RTC 开发者社区主办的 “RTC Dev Meetup 北京站”如约举行&#xff0c;超过100位求知若渴的开发者参加了活动。来自 LeanCloud、声网 Agora、阿里、美团点评的资深工程师&#xff0c;与他们共同分享了 Flutter 开发中的实践经验。 我们在这里回顾一下…

screen命令

原文链接 screen其实就是linux虚拟终端&#xff0c;你可以用它创建很多虚拟终端&#xff0c;每个终端可以创建1~10个窗口&#xff0c;每个窗口相当于一个linux shell窗口&#xff0c;可以执行的操作和正常shell完全一样。 【终端操作】 &#xff08;需要在物理shell中操作&a…

linux 565显示格式,RGB565转BMP格式 C语言程序

#include#include#include#include"rgb2bmp.h"int RGB2BMP(char *,int ,int ,FILE *);int main(int argc,char *argv[]){double num_tmp 0;FILE *p;/*************** input data ***********filename :RGB数据文件名称nWidth :所生成文件的水平像素n…

Spring Boot @ConfigurationProperties使用指导

1.简介 Spring Boot的一个非常有用的功能是外部化配置&#xff0c;并且可以轻松访问属性文件中定义的属性。 我们现在将详细地探索ConfigurationProperties注释。 2.设置 本文使用相当标准的设置。我们首先在我们的pom.xml中添加spring-boot-starter-parent作为父项&#xff1a…