关于EL表达式页面显示去掉中括号的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于EL表达式页面显示去掉中括号的问题相关的知识,希望对你有一定的参考价值。

后台 List list= new ArrayList();
list.add("1");
list.add("2");
list.add("3");
request.setAttribute("lst",list);
jsp 直接用EL表达式显示$lst[i] I是下标0,1,2
显示结果是正确的 但是会有个中括号 结果是[1] [2] [3]这样子
我想去掉这个中括号 不知道怎么处理

参考技术A 你可以使用<c:foreach>标签遍历啊,你的那种写法肯定会得到中括号,一般开发都是遍历

EL表达式

EL表达式:

    最初出现的目的是用来取代jsp页面中的jsp脚本表达式.但是随着el的发展el的功能已经不限于此了

    替代<%= %>脚本表达式,在j2ee1.4以前默认是不支持el,如果需要需要指定page指令[isELIgnored="true | false" ]为false,j2ee4.0后默认支持el


${el表达式}

(1)获取数据:
使用中括号的地方都可以使用点号替代,除了中括号中是数字或者中括号中包含特殊字符(-.)的情况除外
在中括号中如果不用双引号引起来则是变量,先找变量的值再拿变量的值使用.如果用双引号则是常量,直接使用常量的值

~获取常量
字符串/数字/布尔类型,直接写在el表达式中,el直接进行输出
~获取域中的变量
如果el中写的是一个变量的名,则el会调用pageContext的findAttribute方法,在四大作用域中以给定的名字找对应的属性值,找到后进行输出,如果四个域中都找不到,什么都不输出
~获取数组中的数据
~获取集合中的数据
~获取Map中的数据
~获取javabean的属性 


 

获得域中的属性(~获取域中的变量)
${propName}在四个域中搜寻proName属性,输出该值到输出流中
${pageScope/requestScope/sessionScope/applicationScope.proName}获取指定域中的属性
${attr[0]}获取域中的集合的指定元素
${list[0]}获取list中的指定位置元素
${map.keyName}获取map中指定键的值
${bean.propName}获取javaBean的属性,可以认为是调用了javaBean的getXXX方法,
~最重要的一个应用场景:在写路径的时候最好不要把web应用名称写死,java中应该用request.getContextPath去获取。jsp中就用el获取:${pageContext.request.contextPth}
~.和[]区别使用点的地方都可以用中括号,如果属性名是数字或包含特殊符号(.-)就必须使用中括号。例子:${map["first.name"]}

 

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%@page import="com.itheima.domain.Person"%>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6   </head>
 7   <body>
 8       <h1>获取javabean的属性</h1><hr>
 9       <%
10           Person p = new Person();
11           p.setName("芙蓉姐姐");
12           p.setAge(17);
13           pageContext.setAttribute("p",p);
14        %>
15        ${p.name }${p.age } ${p.name }//这里的p.name 中的name不是name属性,而且它被private修饰;其实el表达式底层调用了getName()
16        <img src="${pageContext.request.contextPath }/1.jpg"/>
17       
18       <h1>获取Map中的数据</h1><hr>
19       <%
20           Map<String,String> map = new HashMap();
21           map.put("name","奥巴马");
22           map.put("age","17");
23           map.put("gender","");
24           map.put("addr","白宫");
25           map.put("name.xiao","小黑黑");
26           pageContext.setAttribute("map",map);
27           pageContext.setAttribute("name","age");
28        %>
29        ${map["name"] }${map["addr"] }
30        ${map.gender }${map.age }
31        ${map["name.xiao"] }
32       
33       <h1>获取集合中的数据</h1><hr>
34       <%
35           List<String> list = new ArrayList<String>();
36           list.add("甄嬛");
37           list.add("安玲荣");
38           list.add("凤姐");
39           pageContext.setAttribute("list",list);
40        %>
41       ${list[2] }
42       
43       <h1>获取数组数据</h1><hr>
44       <%
45           String [] names = {"容嬷嬷","紫薇","金锁","小燕子"};
46           pageContext.setAttribute("names",names);
47        %>
48     ${names[2]}
49       <h1>获取域中的变量数据</h1><hr>
50       <%
51           String name = "灭绝师太";
52           pageContext.setAttribute("name",name);
53       %>
54       ${name }
55       <h1>获取常量数据</h1><hr>
56       ${"阿萨德发射点发" } ${199 } ${true }
57   </body>
58 </html>
Person.java
 1 package com.itheima.domain;
 2 
 3 public class Person {
 4     private String name;
 5     private int age;
 6     public String getName() {
 7         return name;
 8     }
 9     public void setName(String name) {
10         this.name = name;
11     }
12     public int getAge() {
13         return age;
14     }
15     public void setAge(int age) {
16         this.age = age;
17     }
18     
19 }    

 


 

(2)执行运算:
算数运算
+-*/
逻辑运算
比较运算

三元运算符
empty运算符

(3)获取常用开发对象:el中内置了11个内置对象,这些对象el内置的,不需要提前定义就可以直接在el中使用
!pageContext -- 有了它可以很方便的获取jsp页面中的9大隐式对象

!pageScope -- page域中属性组成的Map
!requestScope -- request域中属性组成的Map
!sessionScope -- session域中属性组成的Map
!applicationScope --application域中属性组成的Map

!param -- 所有请求参数组成的Map<String,String>
paramValues -- 所有请求参数组成的Map<String,String[]>

header -- 所有请求头组成的Map<String,String>
headerValues -- 所有请求头组成的Map<String,String[]>

!cookie -- 所有cookie信息组成的Map<String,Cookie>

initParam -- 所有web应用的初始化参数组成Map



(4)调用java方法: -- 不需要大家自己会写调用方法的过程,只要会调用别人写好的标签库就可以了 fn标签库
~写一个类其中包含要被el调用的方法,这个方法必须是静态的方法
~写一个tld文件在其中对要被调用的静态方法进行一下描述
~在jsp页面中taglib指令将tld文件引入当前jsp页面,从而在jsp页面中就可以调用描述好的方法

以上是关于关于EL表达式页面显示去掉中括号的问题的主要内容,如果未能解决你的问题,请参考以下文章

EL表达式

EL表达式

关于jsp中无法使用el表达式以及无法通过绝对路径找到文件的问题

JSP中EL不起作用,显示为String

el表达式不显示值

如何将servlet中的变量在jsp页面中显示---jsp中的EL表达式