表单标签

表单标签

form标签

要使用Spring Web MVC的表单标签,需要在页面引入,示例如下:

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

 

form标签

它会自动的绑定来自Model中的一个属性值到当前form对应的实体对象,默认是command属性,这样我们就可以在form表单体里面方便的使用该对象的属性了;

通常我们都会指定commandName或modelAttribute 属性,来指定使用绑定到的JavaBean的名称,这两个属性功能基本一致。

示例如下:

<form:form action= "/mvcexample/add" method= "post" modelAttribute= "um">

注意: modelAttribute所指定的Bean的名字,一定要在request等属性里面有,否则页面会报错的

 

input标签

input标签会被渲染为一个type为text的普通Html input标签。使用SpringMVC的input标签的唯一作用就是它能绑定表单数据。SpringMVC表单标签最大的好处就是它支持数据绑定,当我们的表单标签不需要绑定的数据的时候,我们应该使用普通的Html标签。

hidden标签

用法跟input标签一样,也能绑定表单数据,只是它生成的是一个隐藏域。

password标签

password标签将会被渲染为一个type为password的普通HTML input标签

textarea标签

extarea标签将被渲染为普通HTML textarea标签

checkbox标签

checkbox标签会被渲染为一个type为checkbox的普通HTML input标签。checkbox标签也是支持绑定数据的。checkbox标签的选中与否状态是根据它绑定的值来判断的

当checkbox绑定的是一个boolean数据的时候,那么checkbox的状态跟该boolean数据的状态是一样的,即true对应选中,false对应不选中

 

绑定列表数据,如数组、List和Set 等的时候,是当checkbox标签的value在我们绑定的列表数据中存在的时候该checkbox将为选中状态 ,示例如下:

1:假如在UserModel中有如下数据:

private List<String> deps = new ArrayList<String>();

//省略对应的getter/setter

2:在Controller的方法中,给deps赋值,示例如下:

@RequestMapping("/toAdd")

public String toAdd(@ModelAttribute("um") UserModel um){

um.getDeps().add("dep1");

um.getDeps().add("dep2");

return "user/add";

}

 

3:页面上:

<form:checkbox path= "deps" value= "dep1"/>dep1

<form:checkbox path= "deps" value= "dep2"/>dep2

<form:checkbox path= "deps" value= "dep3"/>dep3

 

 

结果:那么页面上的dep1和dep2会选中

当checkbox绑定的是一个Object数据的时候,会拿所绑定对象数据的toString结果跟当前checkbox的value进行比较,如果能够进行匹配则该checkbox将为选中状态。

 

checkboxes标签

n用来根据给定的数据,生成一组多选框,必须指定path和items

1:path:所绑定对象的属性,也就是用来判断是否被选中的项

2:items:用来展现的项,也就是总共有多少项

1:比如在UserModel里面添加如下的属性:

private List<String> allDeps = new ArrayList<String>();

private List<String> deps = new ArrayList<String>();

//省略对应的getter/setter

2:在Controller方法里面:

um.getAllDeps().add("dep1");

um.getAllDeps().add("dep2");

um.getAllDeps().add("dep3");

um.getAllDeps().add("dep4");

//

um.getDeps().add("dep1");

um.getDeps().add("dep2");

3:在页面上

<form:checkboxes items="${um.allDeps}" path="deps"/>

结果是:出现4个部门,但是dep1和2选中

n如果要想最后生成的chechkbox的表现值和value不一样,可以使用map,那么此时会根据Map的key进行判断是否选中

n

1:比如在UserModel里面添加如下的属性:

private Map<String,String> allDeps = new HashMap<String,String>();private List<String> deps = new ArrayList<String>();

//省略对应的getter/setter

2:在Controller方法里面:

um.getAllDeps().put ("d1", "dep1");

um.getAllDeps().put("d2", "dep2");

um.getAllDeps().put("d3", "dep3");

um.getAllDeps().put("d4", "dep4");

///

um.getDeps().add ("d1");

um.getDeps().add("d2");

3:在页面上

<form:checkboxes items="${um.allDeps}" path="deps"/>

结果是:出现4个部门,但是dep1和2选中

form下的其它标签

nradiobutton和radiobuttons标签

基本等同于checkbox和checkboxes标签的用法

nselect标签

类似于前面的checkboxes的使用,同样指定path和items,使用前面的数据示例:

<form:select path="deps" items="${um.allDeps}" multiple="false"></form:select>

1:如果绑定的items数据是map的话,那么key作为option的value,而map的值作为option显示的数据

2:如果集合数据又是一个对象的话,可以通过指定属性itemLabel和itemValue来指定将用于呈现的option Label和Value

3:如果集合中是其它数据的话,那就是既做option的value,也做option的显示数据

noption标签

如果select标签没有指定items属性,那么可以使用option标签来指定选项。其用法基本类似于HTML的option标签,就是多个数据绑定的功能,也就是能根据具体值来判断是否需要选中这项。

noptions标签

如果select标签没有指定items属性,那么可以使用options标签来指定选项。

其用法基本类似于指定select标签的items属性,区别是:

1:select标签指定items属性,会忽略所有标签体内写的option

2:options标签前后均可以再手工添加option,比如:

<form:select path="deps"  multiple="false">

<option value="1">请选择</option>

<form:options items="${um.allDeps}"/>

</form:select>

nerrors标签

用来展现Errors对象中包含的错误信息。通过errors标签的path属性来绑定一个错误信息。可以通过path属性来展现两种类型的错误信息。

1:所有的错误信息,这个时候path的值应该置为“*”

2:当前对象的某一个域的错误信息,这个时候path应为所需展现的域的名称

 

转载于:https://www.cnblogs.com/JimCalark/p/6921933.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值