@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用于存储条件结果的变量
scopevar属性的作用域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 - @ModelAttribute注解的使用

Spring的@ModelAttribute注解

spring mvc@ModelAttribute与@SessionAttributes的执行流程

全面解析Spring中@ModelAttribute注解的用法

Spring MVC @ModelAttribute 作为方法参数注解