《精通Spring MVC 4》——2.6 Spring表达式语言

本节书摘来自异步社区《精通Spring MVC 4》一书中的第2章,第2.6节,作者:【美】Geoffroy Warin著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.6 Spring表达式语言

当使用“${}”语法时,我们实际上使用的是Spring表达式语言(Spring Expression Language,SpEL)。关于EL,有多个不同的变种,而SpEL是其中威力强大的一种。

表2-2是它主要特性的概览。

screenshot
SpEL的用处并不仅限于视图之中,可以将它用在Spring框架的各种地方,例如,在通过@Value注解往bean中注入属性时,也可以使用SpEL。

从请求参数中获取数据
我们已经能够在视图中展现来自服务端的数据,但是,如果想获取用户的输入该怎么办呢?根据HTTP协议,有很多方式可以实现这一点,其中最简单的就是传递查询参数到URL之中。

screenshot

你肯定早就知道什么是查询参数了吧,它们会位于URL的“?”字符后面,是由名称和值所组成的列表,每一项会使用“&”符号进行分割,例如:page?var1= value1&var2=value2。
可以使用这项技术要求用户提供他们的名字,再次修改HelloController类,如下所示:

@Controller
public class HelloController {

    @RequestMapping("/")
    public String hello(@RequestParam("name") String userName, Model
model) {
        model.addAttribute("message", "Hello, " + userName);
        return "resultPage";
    }
}

如果此时导航至localhost:8080/?name=Geoffroy,将会看到如图2-5所示的结果。

screenshot

图2-5

默认情况下,请求参数是强制要求存在的。这意味着,如果导航至localhost:8080,那么将会看到一个错误页面。

查阅一下@RequestParam的代码,可以看到除了value属性以外,它还有其他两个可用的属性:required和defaultValue。

因此,可以修改一下代码,为其指定一个默认值或者将其设置为非必填项:

@Controller
public class HelloController {

    @RequestMapping("/")
    public String hello(@RequestParam(defaultValue = "world") String
name, Model model) {
        model.addAttribute("message", "Hello, " + name);
        return "resultPage";
    }
}

screenshot

在Java 8中,我们可以不指定value参数。如果这样的话,将会使用带有注解的方法参数名称。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值