JSTL表达式Word下载.docx
《JSTL表达式Word下载.docx》由会员分享,可在线阅读,更多相关《JSTL表达式Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
用表达式来设置数值:
将页面作用域内名为square的变量赋值为名为x的请求参数的值的平方。
语法二:
将本体内容的数据储存至范围为scope的varName变量之中
]>
…本体内容
/c:
主体内生成的所有内容都将作为一个String值赋给指定变量。
语法三:
将value的值储存至target对象的属性中
target="
target"
property="
propertyName"
/>
语法四:
将本体内容的数据储存至target对象的属性中
settarget="
>
名称
value
var
scope
target
property
说明
要被储存的值
欲存入的变量名称
var变量的JSP范围
为一JavaBean或java.util.Map对象
指定target对象的属性
EL
Y
N
类型
Object
String
必须
否
默认值
无
page
注意:
一<
标签有两种不同的属性设置:
var和target。
var“版本”用于设置作用域属性,target“版本”用于设置bean属性或Map值。
★var“版本”
1<
userLevel"
Cowboy"
2<
fido"
${person.dog}"
3<
user"
Sheriff,Bartender,Cowgirl
<
如果“value”为null,“var”指定的属性将被删除!
如果“var”指定的属性不存在,则会创建一个属性,但仅当“value”不为null时才会创建新属性。
★target“版本”
1.<
${petMap}"
dogName"
Clover"
scope="
2.<
${person}"
name"
${foo.name}
<
如果“target”是一个Map,“property”指定的是该Map的一个键;
如果“target”是一个bean,“property”指定的是该bean的一个成员字段。
如果“target”表达式为null,容器会抛出一个异常。
如果“target”表达式不是一个Map或bean,容器会抛出一个异常。
如果“target”表达式是一个bean,但是这个bean没有与“property”匹配的成员字段,容器会抛出一个异常。
二定义变量的使用范围:
默认的是:
page范围;
“scope”是可选的,如果没有使用这个属性,则默认为页面作用域。
具体的,当没有使用这个属性时,容器会依次在页面作用域、请求作用域、会话作用域、应用作用域查找,如果找不到“var”指定名字的作用域属性,容器就会在页面作用域新建一个属性;
如果找不到“target”指定的对象,容器会抛出一个异常。
<
para"
${41+1}"
outvalue="
${sessionScope.para}"
remove>
:
是用来删除限制了作用域的变量的。
删除数据。
语法:
没有本体(body)内容
removevar="
]/>
指定待删除变量的名称
2scope属性是可选的,它表示待删除变量来自哪个作用域,缺省为page。
欲移除的变量名称
EL
类型
必须
是
输出
out>
:
显示表达式的值,而不存储它。
类似<
%=%>
[escapeXml="
{true|false}"
][default="
defaultValue"
该标记对由其value属性指定的表达式进行求值,在对value属性的表达式求值所得结果为null或空String的情况下,<
将打印其值。
如果value值为null,则显示default的值;
没指定default,则输出空字符串。
有本体(body)内容
defaultvalue <
名称
default
escapeXml
需要显示出来的值
如果value的值为null,则显示default的值
是否转换特殊字符,如:
转换成&
lt;
Y
boolean
是
否
无
true
escapeXml属性也是可选的。
它控制当用<
标记输出诸如“<
”、“>
”和“&
”之类的字符(在HTML和XML中具有特殊意义)时是否应该进行转义。
如果将escapeXml设置为true,则会自动将这些字符转换成相应的XML实体(此处提到的字符分别转换成&
、&
gt;
和&
amp;
)。
例如,假定有一个名为user的会话作用域变量,它是一个类的实例,该类为用户定义了两个特性:
username和company。
每当用户访问站点时,这个对象被自动分配给会话,但直到用户实际登录后,才会设置这两个特性。
假定是这种方案,在用户登录之后,这个片段将显示单词“Hello”,其后是他/她的用户名和一个惊叹号。
但是,在用户登录之前,由这个片段生成的内容则是短语“HelloGuest!
”。
在这种情况下,因为username特性还有待初始化,所以<
标记将转而打印出default属性的值(即字符串“Guest”)。
Hello<
${user.username}"
default="
Guest"
!
登陆之前:
HelloGuest!
登陆之后:
Hello${user.username}!
if>
执行流程控制,就和我们一般在程序中用的if一样。
iftest="
testCondition"
{page|request|session|application}"
[var="
][scope="
本体内容
如果表达式的结果为true,则执行本体内容,false则相反
标签必须要有test属性,当test中的表达式结果为true时,则会执行本体内容;
如果为false,则不会执行。
如果指定了scope属性,则必须指定var属性。
choose>
本身只当做<
when>
和<
otherwise>
的父标签。
本体内容(<
) <
限制:
除了空白字符外,<
的标签体只能包含这两个标签。
的本体内容只能有:
a.空白 b.1或多个<
c.0或1个<
说明:
1运行时,判断<
标签的测试条件是否为true,第一个测试条件为true的<
标签的标签体将被JSP容器执行。
如果没有满足条件的<
标签,那么,<
的标签体将被执行。
2若使用<
和<
来做流程控制时,两者都必须为<
的子标签
作为<
的子标签,表示一个可选的条件。
whentest="
>
本体内容 <
必须
默认值
test
boolean
是
约束:
必须有一个直接的父标签<
而且必须在同一个父标签下的<
标签之前出现。
运行时,判断<
标签的标签体被JSP容器执行。
的子标签,表示最后的选择,在同一个<
中,当所有<
的条件都没有成立时,则执行<
的本体内容。
必须在<
之间 ·
在同一个<
中时,<
必须为最后一个标签。
中,假若所有<
的test属性都不为true时,则执行<
${condition1}"
condition1为true <
${condition2}"
condition2为true <
<
condition1和condition2都为false <
范例说明:
当condition1为true时,会显示“condition1为true”;
当condition1为false且condition2为true时,会显示“condition2为true”,如果两者都为false,则会显示“condition1和condition2都为false”。
注意 假若condition1和condition2两者都为true时,此时只会显示"
condition1为true"
,这是因为在同一个<
下,当有好几个<
都符合条件时,只能有一个<
成立。
forEach>
为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。
运作方式为当条件符合时,就会持续重复执行<
的本体内容。
迭代一集合对象之所有成员
forEach[var="
]items="
collection"
[varStatus="
varStatusName"
] [begin="
begin"
][end="
end"
][step="
step"
迭代指定的次数
][varStatus="
]begin="
end="
[step="
EL
用来存放现在指到的成员
items
被迭代的集合对象
ArraysCollection
Iterator
EnumerationMapString
varStatus
用来存放现在指到的相关成员信息
N
begin
开始的位置
int
0
end
结束的位置
最后一个成员
step
每次迭代的间隔数
1
限制:
·
假若有begin属性时,begin必须大于等于0
假若有end属性时,必须大于等于begin
假若有step属性时,step必须大于等于0 Null和错误处理
假若items为null时,则表示为一空的集合对象
假若begin大于或等于items.length时,则迭代不运算
说明如果要循序浏览一个集合对象,并将它的内容显示出来,就必须有items属性。
注意
varName的范围只存在<
的本体中,如果超出了本体,则不能再取得varName的值。
上个例子中,若${item}是在<
之后执行时,如:
forEachitems="
${atts}"
item"
${item}<
/br>
${item}则不会显示item的内容。
除了支持数组之外,还有标准J2SE的集合类型,例如:
ArrayList、List、LinkedList、Vector、Stack和Set等等;
另外还包括java.util.Map类的对象,例如:
HashMap、Hashtable、Properties、Provider和Attributes。
还有begin、end和step这三种属性:
begin主要用来设定在集合对象中开始的位置(注意:
第一个位置为0);
end用来设定结束的位置;
而step则是用来设定现在指到的成员和下一个将被指到成员之间的间隔。
我们将之前的范例改成如下:
中指定的集合对象atts将会从第2个成员开始到第5个成员,并且每执行一次循环都会间隔一个成员浏览。
因此结果是只显示atts[1]和atts[3]的内容
JSTL之数字、日期格式化---<
fmt:
formatNumber/>
、<
formatDate/>
日期表示
formatDatevalue="
${DATE1}"
pattern="
yyyy-MM-ddhh:
mm:
ss"
type="
date"
dateStyle="
long"
百分数,千分数表示
formatNumbervalue="
${DoubleVALUE}"
number"
0.00‰"
0.01‰<
0.00%"
0.20%
其他数字表示
123456.7891"
#,#00.0#"
--123,456.79
123456.7"
--123,456.7
#,#00.00#"
--123,456.70
12"
percent"
--1,200%type可以是currency、number、和percent。
货币表示
===1
setLocalevalue="
ch_CH"
${data}"
currency"
==2
${doubleValue}"
¥0.00"
参考==============================================================================
java格式化输出:
DecimalFormatdf=newDecimalFormat("
格式"
);
Stringfmt=df.format(double);
符号意义
0一个数位
#一个数位,前导零和追尾零不显示
.小数点分割位置
,组分隔符的位置
-负数前缀
%用100乘,并显示百分号
其他任何符号在输出字符串中包括指定符号
JSP国际化-格式化货币和日期
1.格式化货币
世界上许多国家都有不同的货币格式和数字格式惯例。
针对特定的本地化环境正确地格式化和显示货币是本地化的一个重要部分。
%@pagepageEncoding="
UTF-8"
%@taglibprefix="
uri="
fmt"
html>
head>
title>
CurrencyFormatting<
/title>
/head>
body>
h1>
CurrencyFormattingandlocales<
/h1>
h3>
English,GreatBritain<
/h3>
en_GB"
formatNumbertype="
80000"
br/>
English,USA<
en_US"
French,France<
fr_FR"
Japanese,Japan<
ja_JP"
Korean,Korea<
ko_KR"
Spanish,Spain<
es_ES"
Arabic,Egypt<
ar_EG"
UsingLocalNumericFormattingforDifferentCurrency<
h4>
English,GreatBritan<
/h4>