SpringMVC入门之七:使用JSP作为视图

JSP作为JavaWeb应用程序的视图技术已经超过15年了,想在仍然是使用量最大的视图技术。

  • 视图解析器:
    InternalResourceViewResolver是最简单和最常用的JSP视图解析器。这种视图解析器遵循一种约定,会在视图名上添加前缀和后缀,进而确定一个Web应用中视图资源的物理路径。
  • 视图位置 在通常的Web应用中,我们把JSP文件放到Web应用的WEB-INF目录下,防止对它的直接访问。
  • 基于Java的配置:

     

  • 基于XML的配置:

     

这样,books/detail将会解析为“/WEB-INF/views/books/detail.jsp”。注意,当逻辑视图包含斜线时,这个斜线也会带到资源的路径名中。这样,我们可以很方便地将视图模板组织为层级目录结构,而不是将它们都放到同一个目录中。

标签库是为JSP添加功能的强大方式,能够避免在脚本块中直接编写Java代码。Spring提供了两个JSP标签库,用来帮助定义SpringMVC Web的视图。其中一个标签库会用来渲染HTML表单标签,这些标签可以绑定model中的某个属性。另外一个标签库包含了一些工具类标签,我们随时都可以非常便利地使用它们。在这两个标签库汇中,表单绑定的标签库更加有用。

Spring的表单绑定JSP标签库包含了14个标签,它们中的大多数都用来渲染HTML中的表单标签。但是,它们与原生HTML标签的区别在于它们会绑定模型中的一个对象,能够根据模型中对象的属性填充值。标签库中还包含了一个为用户展现错误的标签,它会将错误信息渲染到最终的HTML之中。为了使用表单绑定库,需要在JSP中对其进行声明:

上面我们将前缀设置为了“sf”,它是Spring form的简写,也可以设置成其他的字符,如“form”。这14个标签及介绍如下:
这里写图片描述

以一个简单的注册为例,使用相应标签库的注册表单如下所示:

会渲染一个HTML标签,但它也会通过commandName属性构建针对某个模型对象的上下文信息。在其他的表单绑定标签中,会引用这个模型对象的属性。在上面的例子中,我们将commandName属性设置为spitter。因此,在模型中必须要有一个key为spitter的对象,否则的话,表单不能正确渲染(会出现JSP错误)。我们在上面设置了path属性,标签的value属性值将会设置为模型对象中path属性所对应的值。
另外,值得注意的是,从Spring3.1开始,标签能够允许我们制定type属性,这样的话,除了其他可选得类型外,还能制定HTML5特定类型的文本域,如data、range和email。例如:

相对于标准的HTML标签,使用Spring的表单绑定标签能够带来一定的功能提升,在校验失败后,表单中会预先填充之前输入的值。但是,这依然没有告诉用户错在什么地方。为了知道用户矫正错误,我们需要使用。

标签渲染了校验错误后的提示信息,如果firstName属性没有错误的话,那么不会渲染任何内容。但如果有校验错误的话,那么它将会在一个HTML标签中显示错误信息。例如,如果用户提交的姓名为字母“J”的话,那么如下的HTML片段就是针对First Name输入域所显示的内容:

现在已经能够提示错误信息了,但是我们可以更进一步,修改错误的样式,使其更加显眼。为了做到这一点,可以设置cssClass属性:

只需要在样式文件中简单地设置:

那么当出现校验错误时,会有红色的提示信息出现。显然,这样的表单才更加的用户友好。
此外,还有一个重要的属性:cssErrorClass。这个属性可以设置在等标签中。如:

当error的样式为:

且firstName域的校验出错时,该输入框的背景将会被设置为淡红色,这样的提示效果更好。

现在我们已经有了很好的方式为用户展现错误信息。不过,我们还能够让这些错误信息更加易读。重新修改一下Spitter类就可以达到效果了:

对于上面每个域,我们都将其@Size注解的message设置为一个字符串,这个字符串是用大括号括起来的。如果没有大括号的话,massage中的值将会作为展现给用户的错误信息。但是使用了大括号之后,托福考试费用我们使用的就是属性文件中的某一个属性,该属性包含了实际的信息。接下来需要做的就是创建一个名为ValidationMessages.properties的文件,并将其放在根类路径之下:

ValidationMessages.properties文件中每条信息的key值对应于注解中message属性占位符的值。同时,最小和最大长度也没有硬编码在文件中,在这个用户友好的信息中也有自己的占位符——{min}和{max}——他们会引用@Size注解上所设置的min和max属性。
将这些错误信息抽取到属性文件中还会带来一个好处,那就是我们可以创建地域相关的配置文件,为用户展现特定地域的特定语言。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值