先来说说表达式语言${}
-------------------------------------------------------------------------------------------
div - 除(/) mod - 取余(%) eq - 等于(==) ne - 不等于(!=)
lt - 小于(<) gt - 大于(>) le - 小于等于(<=) ge - 大于等于(>=)
and - 逻辑与(&&) or - 逻辑或(||) not - 逻辑非(!) true - 逻辑真
false - 逻辑假 null - 空值 instanceof - empty - 空值测试运算符
② EL内建对象
----------------------------------------------------
隐含对象 类型 说明
----------------------------------------------------
pageContext java.util.Map 表示此JSP的PageContext对象
pageScope java.util.Map 取得Page共享范围的属性名字所对应的值
requestScope java.util.Map 取得Request共享范围的属性名字所对应的值
sessionScope java.util.Map 取得session共享范围的属性名字所对应的值
applicationScope java.util.Map 取得application共享范围的属性名字所对应的值
param java.util.Map 功能同request.getParameter()方法
paramValue java.util.Map 功能同request.getParameterValues()方法
header java.util.Map 功能同request.getHeader()方法
heraderValues java.util.Map 功能同request.getHeaders()方法
cookie java.util.Map 功能同request.getCookies()方法
initParam java.util.Map 功能同application.getInitParameter()方法
----------------------------------------------------------
③ EL运算符
[] .
()
- ! empty
* / %
+ -
< > <= >=
== !=
&&
||
${ A ? B : C }
④ EL中的自定义函数
1. 编写函数定义,函数声明在类中必须是静态的
package elfunction ;
public class functions {
public static String toUpper( String value ) {
return value.toUpperCase() ;
}
}
2. 编写自定义函数的TLD文件,放在<taglib>标签内
<function>
<name>toUpper</name>
<function-class>elfunction.functions</function-class>
<function-signature>
java.lang.String toUpper( java.lang.String )
</function-signature>
<description>A to Upper function.</description>
</function>
3. 在web.xml中引入标签定义文件
<taglib>
<taglib-uri>/WEB-INF/tlds/elfunction.tld</taglib-uri>
<taglib-location>/WEB-INF/tlds/elfunction.tld</taglib-location>
</taglib>
4. 在页面中以自定义标签的形式引入自定义函数
<%@ taglib uri="/WEB-INF/tlds/elfunction.tld" prefix="ELFun"%>
${ ELFun:toUpper( "abcdefg" ) }
--------------------------------------------------------------
也就是说: 1)表达式语言${} 只能取得EL内建对象中的值(如通过request/session等的setAttribute("orgName")设置的)。
2)表达式语言${} 不能取得在JSP Scriptlet <% String orgName= request.getAttribute("orgName"); %> 定义的变量的值。而jsp表达式<%= >却可以,如:
<input type="text" id="a" name="a" value="<c:out value="${orgName}"/>"/> //取不到值。
<input type="text" id="af" name="af" value="<%= orgName %>"/>//可以取到值。
3) 表达式语言${} 和 jsp表达式<%= %>均可在用在js中如:
表达式语言${} : window.location.href="<%=request.getContextPath()%>/servlet/planArrange?actionType=getMergeItemInfo&orgId=<c:out value="${orgId}"/>&orgName=<c:out value="${orgName}"/>";
jsp表达式<%= %>就是把<c:out value="${orgId}"/>替换为<%=orgId %>,但这个orgId变量要在jsp中在<% %>中设置,或用.<c:set value = "this is the first example of c:set" var = "first"></c:set>等。
下面给一个例子。
看点:1) 填写”查询“表单后提交(查询列表和查询表单在一个页面),如何使表单中的input,select 元素的数据不变。表单提交后用 reques.getParameter("orgName")取得select 元素的值,如
<option value="extm"> 全部</option> 是 option 的value的值即 “extm”。
2)取得选中的checkBox。
3)循环超链接。<c:out value="${orgName}"/> 作为js函数的参数。
---------------------------------------------------------------
首先要在servlet中设置 <c:out value="${value}"/>要用到值,因为<c:out value="${value}"/>无法取得在
<% code %> 中定义的变量的值。
如:在//unitServlet.java 中有语句:
request.setAttribute("orgId", req.getParameter("orgId"));
request.setAttribute("materialId", req.getParameter("materialId"));
request.setAttribute("opTime", req.getParameter("opTime"));
那么在servlet中用
ServletContext sc = getServletContext();
sc.getRequestDispatcher(jspFile).forward(req, resp);
跳转到的jsp中 可以用<c:out value="${orgId}"/>就可以取得orgId的值 也可以用
jsp表达式 :<%= request.getAttribute("orgId")>,注意request.getAttribute("orgId")后没有分号结尾。
- <%@ page contentType="text/html; charset=GBK"%>
- <%@ page import="java.util.List"%>
- <%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
- <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
- <%
- List pageList = (List)request.getAttribute("pageList");
- //select 的<%=("".equals(applyType))?"selected":""%> 用到。
- String applyType = (String)request.getAttribute("applyType");
- %>
- <html>
- <head>
- <title>合并任务书</title>
- <link href="<%=request.getContextPath()%>/jsp/images/css.css" rel="stylesheet" type="text/css">
- <script type="text/javascript" src="<%=request.getContextPath()%>/jsp/js/calendar.js"></script>
- <script language=javascript>
- <!--合并计划 获得选中的checkBox-->
- function mergeItem()
- {
- var checkName = document.getElementsByName("applyIdOfCheckBox");
- var checkValue = [];
- for(var i=0; i <checkName.length; i++)
- {
- if(checkName[i].type== "checkbox" && checkName[i].checked)
- {
- checkedFlg = true;
- checkValue[checkValue.length] = checkName[i].value;
- }
- }
- if(checkValue.length <= 0)
- {
- alert("请选择要操作的记录!");
- }
- else
- {
- window.location.href="<%=request.getContextPath()%>/servlet/materialCheckup?actionType=mergeItem&checkValue="+checkValue+"orgId="+document.all.orgId.value+"orgName="+document.all.orgName.value;
- }
- }
- <!-- 定义超链接调用的函数-->
- function openneirong5(ppfId)
- {
- window.location="<%=request.getContextPath()%>/servlet/materialCheckup?actionType=getPlanArrangeSplitInfo&ppfId="+ppfId+"orgId="+document.all.orgId.value+"orgName="+document.all.orgName.value;
- }
- <!-- 重新设置表单的值 -->
- function toReset(){
- document.form1.planId.value="";
- document.form1.planTime.value="";
- }
- </script>
- </head>
- <body background="<%=request.getContextPath()%>/jsp/images/ri.gif">
- <form name="form1" method="post" action="<%=request.getContextPath()%>/servlet/materialCheckup?actionType=getPlanProjectFlow">
- <table cellspacing="1" width="100%" bgcolor="#476aac" border="0">
- <tbody>
- <tr>
- <td background="/cnas/jsp/images/sp.jpg" bgcolor="#ffffff" colspan="5" height="22">材料初审
- <div align="center"></div></td>
- </tr>
- <tr valign="center">
- <td bgcolor="#ffffff" height="22"><div align="center">策划拆分号</div></td>
- <td bgcolor="#ffffff"><div align="left"><input name="planId" value="<c:out value="${planId}"/>"/></div></td>
- <td width="85" bgcolor="#ffffff" height="22"><div align="center">策划时间</div></td>
- <td width="328" bgcolor="#ffffff" height="22"><div align="left">
- <input readonly="readOnly" size="28" name="planTime" value="<c:out value="${planTime}"/>"/>
- <img onclick="document.form1.planTime.value=showCalendar(document.form1.planTime.value)" src="../js/calendar.gif" align="middle" border="0" /> </div></td>
- </tr>
- <tr>
- <td width="322" bgcolor="#ffffff" height="22"><div align="left">
- <select id = "applyType" name="applyType">
- <option value="" <%=("".equals(applyType))?"selected":""%>>全部</option>
- <option value="extbf" <%=("extbf".equals(applyType))?"selected":""%>>扩业务领域</option>
- <option value="extc" <%=("extc".equals(applyType))?"selected":""%>>扩业务范围</option>
- <option value="extf" <%=("extf".equals(applyType))?"selected":""%>>扩领域</option>
- <option value="exts" <%=("exts".equals(applyType))?"selected":""%>>扩分场所</option>
- <option value="fst" <%=("fst".equals(applyType))?"selected":""%>>初评</option>
- <option value="oversee"<%=("oversee".equals(applyType))?"selected":""%>>监督</option>
- <option value="sec" <%=("sec".equals(applyType))?"selected":""%>>复评</option>
- </select>
- </div></td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" colspan="4" height="22"><div align="center">
- <input type="submit" value="查 询" name="Submit" />
- <input type="button" value="重 置" name="reset" onclick="toReset()"/>
- </div></td>
- </tr>
- </tbody>
- </table>
- <input type="hidden" id="orgId" name="orgId" value="<c:out value="${orgId}"/>"/>
- <input type="hidden" id="orgName" name="orgName" value="<c:out value="${orgName}"/>"/>
- <input type="text" id="a" name="a" value="<c:out value="${aa}"/>"/>
- <input type="text" id="af" name="af" value="<%= aa %>"/>
- </form>
- <div align="left">
- <!--<input onclick="mergeItem();" type="button" value="合并计划安排" name="noregis2" />
- --></div>
- <table id="table1" cellspacing="1" width="100%" border="0">
- <tr>
- <td>
- <display:table name="pageList" id="view" pagesize="10" class="viewTable" cellspacing="1px" requestURI="">
- <display:column style="width:12%;text-align:center;" class="viewTableTD" sortable="false" title="策划项目号">
- <a href="#" onclick="openneirong5(<c:out value="${view.ppfId}"/>)"/><c:out value="${view.planId}"/></a>
- </display:column>
- <display:column style="width:15%;height:18px;text-align:center;" class="viewTableTD" sortable="false" property="orgName" title="申请机构"></display:column>
- <display:column style="width:15%;text-align:center;" class="viewTableTD" sortable="false" property="projectBrief" title="策划项目信息"></display:column>
- </display:table>
- </td>
- </tr>
- </table>
- </body>
- </html>