在上一篇文章中,我们看到了如何在MVC Controller中访问query , path和form参数 。 这篇文章展示了如何使用@BeanParam批注将多个参数映射到一个对象。

让我们重用关于表单参数的文章中的简单HTML表单:

<form action="submit" method="post"><label>ID:</label><input type="text" name="id" /><label>Name:</label><input type="text" name="name" /><label>Role:</label><select name="role"><option value="admin">Admin</option><option value="reporter">Reporter</option><option value="accountant">Accountant</option></select><input type="submit"/>
</form>

这定义了一个简单的表单,其中包含两个文本输入字段和一个带有三个选项的选择菜单。

在上一篇有关表单参数的文章中 ,我们了解到可以通过使用@FormParam注释控制器参数来访问这些参数。

但是,如果表单具有多个参数,则此方法很麻烦。 在这些情况下,我们通常希望将表单参数映射到单独的对象。 @BeanParams可以帮助我们做到这一点。

使用@BeanParam,我们可以编写:

@POST
@Path("submit")
@Controller
public String submit(@BeanParam User user) {// use user ..
}

User类如下所示:

public class User {@FormParam("id")private long id;@FormParam("name")private String name;@FormParam("role")private Role role;// getters and setters
}

调用controller方法时,将自动创建User的新实例。 创建的对象的字段将使用传递的表单参数填充。

@BeanParam和其他参数注释

与@BeanParam一起使用的类不限于表单参数。 以前的博客文章中显示的所有参数注释( @QueryParam , @PathParam等)都可以在bean参数内部使用。

例如:

@GET
@Path("/date/{year}/{month}")
public String get(@BeanParam RequestData data) {...
}
public class RequestData {@PathParam("year")private int year;@PathParam("month")private int month;@QueryParam("name")private String name;// getters and setters
}

如果我们现在将HTTP GET请求发送到

/date/2016/02?name=john

值2016、2和john将被注入字段Year,month和RequestData名称。

快速总结

使用@BeanParam可以将请求参数注入bean。 如果您有多个参数,这特别有用。 在bean参数内部,可以使用所有其他参数注释。

  • 您可以在GitHub上找到示例源代码。

翻译自: https://www.javacodegeeks.com/2016/03/java-ee-8-mvc-working-bean-parameters.html

Java EE 8 MVC:使用bean参数相关推荐

  1. Java EE 8 MVC:控制器的详细介绍

    Java EE MVC是为Java EE 8规划并在JSR-371中指定的基于动作的新MVC框架. 这是我的Java EE 8 MVC教程的第二篇文章. 第一篇文章介绍了基础知识,并展示了如何开始使用 ...

  2. Java EE 8 MVC:使用表单参数

    在前两篇文章中,我们了解了如何在即将到来的Java EE MVC框架中使用查询和路径参数 . 这篇文章重点介绍表单参数. 当您使用发布请求提交Web表单时,表单值将作为请求正文的一部分发送. 媒体类型 ...

  3. Java EE 8 MVC:使用路径参数

    在上一篇文章中,我们看到了如何在Java EE MVC中使用查询参数 . 这篇文章继续与一个非常相似的主题:路径参数. 路径参数是请求路径的动态部分,可以使用@Path注释指定. 例如: @Contr ...

  4. Java EE 8 MVC:使用查询参数

    在上一篇有关新Java EE MVC框架的文章中,我们详细介绍了Controllers . 在本篇和以下文章中,我们将看到如何在MVC控制器中访问各种类型的请求数据. Java EE MVC大量使用了 ...

  5. Java EE 8 MVC:Ozark入门

    大约一年前, 针对Java EE 8宣布了一个新的基于动作的MVC框架,简称为MVC. MVC(在JSR 371中指定)基于JAX-RS,并与Java EE技术(如CDI和Bean验证)集成. MVC ...

  6. Java EE 8 MVC:全局异常处理

    在之前的先前文章中,我们了解了在Java EE MVC中访问请求信息(例如查询或路径参数 )的各种方法. 这篇文章显示了如何将全局异常处理应用于MVC应用程序. 假设我们有一个控制器方法可能抛出Ill ...

  7. java ee编译器_Java EE 8 MVC:控制器的详细介绍

    java ee编译器 Java EE MVC是为Java EE 8计划并在JSR-371中指定的基于动作的新MVC框架. 这是我的Java EE 8 MVC教程的第二篇文章. 第一篇文章介绍了基础知识 ...

  8. java jax-rs_在Java EE 6中将Bean验证与JAX-RS集成

    java jax-rs JavaBeans验证(Bean验证)是Java EE 6平台的一部分提供的新验证模型. 约束通过以JavaBeans组件(例如托管Bean)的字段,方法或类上的注释形式的约束 ...

  9. 在Java EE 6中将Bean验证与JAX-RS集成

    JavaBeans验证(Bean验证)是一种新的验证模型,可作为Java EE 6平台的一部分使用. 约束条件支持Bean验证模型,该约束以注释的形式出现在JavaBeans组件(例如托管Bean)的 ...

最新文章

  1. 使用Keras/TensorFlow模型构建属于你的Chatbot API
  2. 平凡的80后 不平凡的人生路
  3. arm linux下编译库System.Net.Primitives.dll和System.Xml.XmlSerializer.dll
  4. c++宏定义常量为什么使用移位_干货 | C语言系列3——常量,运算符,常用数学函数.........
  5. Mysql的库与表的基本操作
  6. vs2008 生成项目xml文件和路径配置
  7. 20155202 《Java程序设计》实验二(面向对象程序设计)实验报告
  8. linux刷windows phone,老机焕新生!Lumia 950XL也能跑Win10
  9. openwrt打印服务器硬件需求,openwrt打印服务器
  10. FreeCAD源码分析:Path模块
  11. 【时序】时间序列领域的 GAN 模型综述论文笔记
  12. 人类简史--经典语句摘录
  13. 几万年前,孙悟空的一次删库跑路...
  14. 根据经纬度坐标获得省市区县行政区划城市名称,自建数据库 java python php c# .net 均适用
  15. 实际我的暗影精灵4设置U盘启动的方法
  16. Winpcap 动态链接库调用npf.sys
  17. openlayer 画圆Circle实际半径解决方案
  18. 计算机毕业设计springboot驾照一点通的设计与实现02bpd源码+系统+程序+lw文档+部署
  19. 上计算机课怎么设计表格,怎么在电脑上制作表格,比如排班表?
  20. 在linux服务器上使用命令行下载百度网盘中的文件

热门文章

  1. jstack命令:教你如何排查多线程问题
  2. java实现动态验证码源代码——绘制验证码的jsp
  3. Android 对话框,确定取消
  4. Android RaingBar评分条的使用
  5. Android之Bitmap高效缓存以及android缓存策略
  6. Linux下安装nginx (tar解压版安装) nginx1.16.1
  7. 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误
  8. android 新的布局,Android新布局方式ConstraintLayout快速入门教程
  9. python中seaborn画swarm图_Python可视化 | Seaborn5分钟入门(四)——stripplot和swarmplot
  10. linux-basic(7)linux文件与目录管理