获取请求参数

通过 @RequestParameter 注解,获取请求参数:

  1. @MappingTo("/helloAction.do")public class HelloAction { public void execute(@RequestParameter("name") String userName, @RequestParameter("pwd") String pwd) { }}

请求URL地址:http://localhost:8080/helloAction.do?name=userA&pwd=123456

提示

如果页面上使用了 checkbox 来表示一组值。那么可以使用 @RequestParameter(“values”) String[] vars 获取。

获取Cookie

通过 @CookieParameter 注解获取 Cookie 数据,该注解的用法和 @RequestParameter 一样:

  1. @MappingTo("/helloAction.do")public class HelloAction { public void execute(@CookieParameter("name") String userName, @CookieParameter("pwd") String pwd) { }}

提示

如果cookie中存储了一组相同的数据,那么可以使用 @CookieParameter(“values”) String[] vars 获取。

获取请求头

获取请求头信息使用 @HeaderParameter 注解:

  1. @MappingTo("/helloAction.do")public class HelloAction { public void execute(@HeaderParameter("ajaxTo") boolean ajaxTo) { }}

  1. $.ajax({
  2. beforeSend: function (request) {
  3. request.setRequestHeader("ajaxTo", "true");
  4. },
  5. url: "/helloAcrion.do",
  6. data: formData,
  7. dataType: 'json',
  8. async: true,
  9. success: function (result) {
  10. ...
  11. },
  12. error: function (result) {
  13. ...
  14. }
  15. });

获取URL中?部分的参数

需要使用 @QueryParameter 注解,例如:

  1. @MappingTo("/helloAction.do")public class HelloAction { public void execute(@QueryParameter("value") boolean ajaxTo) { }}

请求URL地址:http://localhost:8080/helloAction.do?value=true

获取Attribute

最原始的办法是通过 httpRequest.getAttribute 获取,但 Hasor 提供了 @AttributeParameter 注解

  1. @MappingTo("/helloAction.do")public class HelloAction { public void execute(@AttributeParameter("value") boolean value) { }}

请求参数组

当一个请求递交了大量参数时,为了减少编写参数列表可以使用 @ParameterGroup

  1. @MappingTo("/helloAction.do")public class HelloAction { public void execute(@ParameterGroup() UserInfo userInfo) { }}public class UserInfo { @RequestParameter("param_1") private String param_1; @RequestParameter("param_2") private String param_2; @RequestParameter("param_3") private String param_3; @RequestParameter("param_4") private String param_4; @RequestParameter("param_5") private String param_5; }

请求参数自动类型转换

Hasor Web 框架可以帮助你进行简单的类型转换。例如:

  1. @MappingTo("/helloAction.do")public class HelloAction { public void execute(@RequestParameter("name") String name, @RequestParameter("age") int age) { }}

可以转换的类型有:

  • 基础类型:byteshortintlongfloatdoublebooleanString

  • 大数类型:BigIntegerBigDecimal

  • 时间日期:java.util.Datejava.util.Calendarjava.sql.Datejava.sql.Timejava.sql.Timestamp

  • 其它类型:EnumFileURLURI

类型转换是使用的 net.hasor.utils.convert.ConverterUtils 工具,因此设置时间格式需要通过下面这段代码来配置 ConverterUtils 工具。

整个程序启动时执行一次就可以。

  1. DateConverter converter = new DateConverter();
  2. converter.setPatterns(new String[] { "yyyy-MM-dd", "hh:mm:ss", "yyyy-MM-dd hh:mm:ss" });
  3. ConverterUtils.register(converter, Date.class);