@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: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>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
var | 用于存储条件结果的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | page |
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary > 2000}">
<p>我的工资为: <c:out value="${salary}"/><p>
</c:if>
运行结果如下:
我的工资为: 4000
参考:
@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的执行流程