一个JSP页面中要实现两个功能:
1、添加车辆,包括车牌号、驾驶员、载重和车辆状态;
2、在添加车辆表单下面列出所有车辆的信息,而且可以在该页面上直接修改,其中车辆状态要经常变动。我使用一个选择控件,默认显示该车辆的状态,需要修改的时候可以直接在上面选择其它状态,提交即可。
过去都是在JSP中直接写JAVA代码,要用<%%>,很麻烦,今天突然现想用JSTL实现,很简洁,具体如下:
1、页面头部
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
上面这一行要加载jstl的函数,下面建立数组的时候用得到
2、定义车辆状态数组
车辆的状态在页面上显示的是汉字,记录在数据库中的是对应的代码,因在车辆新增和修改两个地方都要用到状态信息,所以在页面头部先定义一个数组,把汉字和代码对应起来,这样任何地方都可以共用,以后有改动也只要修改一个地方。
因JSTL不能直接建立数组,需要使用split函数,将一个字符串分割,再赋值给数组,所以,首先定义一个变量如下,车辆的几个状态用逗号“,”隔开。
<c:set var="statusValue" value="10 不在工厂, 11 在西厂, 12 在东厂, 20 维修中, 21 事故中, 22 休假, 30 除名, 31 不服从一次, 32 不服从二次, 33 不服从三次" />
然后用split函数,将上面定义的statusValue按照逗号分割,然后把分割的数据赋给statusArray,这就生成了一个数组。
<c:set var="statusArray" value="${fn:split(statusValue, ',')}"/>
数组statusArray的每个元素由代码+空格+汉字构成,之所以用空格,是想再次通过split函数将代码和汉字分割开,分割的结果再次赋值给一个 数组codeAndStatus,这个codeAndStatus数组的第一个元素就是代码,第二个元素就是与之对应的汉字。
3、定义选择控件
<select name="currentStatus">
<option>请设置车辆状态</option>
<c:forEach var="statusArrayItem" items="${statusArray }" varStatus="s">
<c:set var="codeAndStatus" value="${fn:split(statusArrayItem, ' ')}" />
<option value="${codeAndStatus[0] }"
<c:if test="${codeAndStatus[0] == van.currentStatus }"> selected="selected"</c:if> >
${codeAndStatus[1] }
</option>
</c:forEach>
</select>
这段代码中加下划线的部分是为了在车辆列表中,选择控件直接显示车辆的当前状态,van.currentStatus 是从数据库中读出的代码 。