@ModelAttribute注解与spring的表单标签库form
Posted 晨港飞燕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@ModelAttribute注解与spring的表单标签库form相关的知识,希望对你有一定的参考价值。
介绍:被@ModelAttribute注释的方法会在此controller每个方法执行前被执行
1.@ModelAttribute
/**
* 根据id查询数据
* 可以添加Model属性,进行参数返回,
* model属性如果没有指定,它由返回类型隐含表示,如这个方法返回FfNewRedbagManage类型,那么这个model属性的名称是ffNewRedbagManage
*/
@ModelAttribute
public FfNewRedbagManage get(@RequestParam(required=false) String id,Model model)
System.out.println(id);
FfNewRedbagManage entity = null;
if (StringUtils.isNotBlank(id))
entity = server.get(id);
if (entity == null)
entity = new FfNewRedbagManage();
model.addAttribute("test","测试abc");
entity.setState("中国天津");
return entity;
//查看,增加,编辑表单页面
@RequestMapping(value = "/form")
public String form(FfNewRedbagManage ffNewRedbagManage, Model model)
if(StringUtils.isBlank(ffNewRedbagManage.getId()))//新建
return "modules/ff/server/ffNewRedbagManageForm";
在获得请求/form时,get方法在form方法之前先被调用,
2.表单标签库form
<%--引入标签--%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%--form:形式的写法能让编辑页面进来的值直接赋予,不用jstl的$符号,path为必须属性,是后台model中的属性,如果想给input默认值,可以写原生input,--%>
<form:form id="inputForm" modelAttribute="ffNewRedbagManage" cssStyle="height: 100%">
1.<form:input path="state" id="state" />
2.<input type="text" value="$ffNewRedbagManage.state"/>
3.<input type="text" name="state"/>
4.<input type="text" name="test" id="test" value="$test"/>
<form:hidden path="id" id="id" />
<input type="hidden" id="type" name="type" value="1">
3.其他常用标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
C标签的<c:forEach>,<c:if>和<c:choose>
<c:forEach>
语法:<c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"></c:forEach>
这个标签的目的就是要遍历
items : 就是你要遍历的集合,就是要遍历的全部内容要放在这个下面
var : 就是这个集合下面的每一个元素,比如一个集合1,2,3,4,5,那么var表示的就是1或者2或者3...
begin: 默认从0开始,表示从第几个开始取元素
end : 和begin对应,表示到第几个元素终止
step : 步进,默认是1,表示一个一个跳,还是任意数字跳
varStatus: 表示集合中每个元素的相关信息,有4种状态:index(所在位置,即索引).count(总共已迭代的次数).first(是否为第一个位置),last(是否为最后一个位置)
<c:forEach var="fuwa" items="$a" begin="3" end="4" step="1" varStatus="s">
<c:out value="$fuwa" />的四种属性:<br>
所在位置,即索引:<c:out value="$s.index" /><br>
总共已迭代的次数:<c:out value="$s.count" /><br>
是否为第一个位置:<c:out value="$s.first" /><br>
是否为最后一个位置:<c:out value="$s.last" /><br>
</c:forEach>
<c:if>
<c:if>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
var | 用于存储条件结果的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | page |
<c:set var="salary" scope="session" value="$2000"/>
<c:if test="$salary == 2000">
<p>我的工资为: <c:out value="$salary"/><p>
</c:if>
或者多条件
<c:if test="$salary == 2000 && salary <3000">
<p>我的工资为: <c:out value="$salary"/><p>
</c:if>
运行结果如下:
我的工资为: 4000
C标签的if else
<c:choose>
<c:choose>
<c:when test="$user.id=='1' ">
条件1
</c:when>
<c:when test="$user.id=='0' ">
条件2
</c:when>
<c:otherwise>
条件3
</c:otherwise>
</c:choose>
这组标签说明当满足条件1执行条件1,而其他两个不执行,当满足条件2执行条件2,而其他两个不执行,当所有<c:when>都不满足时才执行<c:otherwise>,这就实现了if else的多分支功能
注意,如果值是null,而条件却是判空字符串,则不走分支,保险起见,需要使用关键字empty,例如
<c:if test="$not empty user.name">
条件体
</c:if>
可以判断name是空字符串和null
参考:
@ModelAttribute注解:https://blog.csdn.net/li_xiao_ming/article/details/8349115
标签库:https://blog.csdn.net/weixin_45682889/article/details/113346405
https://blog.csdn.net/weixin_40903194/article/details/83374711
https://www.runoob.com/jsp/jstl-core-if-tag.html
以上是关于@ModelAttribute注解与spring的表单标签库form的主要内容,如果未能解决你的问题,请参考以下文章
ModelAttribute注解使用与spring重定向传参
spring mvc@ModelAttribute与@SessionAttributes的执行流程