金汉 #3

Merged
p436ejfyi merged 19 commits from branch_JH into main 1 year ago

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

@ -1,5 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/wechat-master/web/WEB-INF/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/wechat-master/web" relative="/" />
</webroots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">

@ -29,55 +29,55 @@
<validator>
<validator-class>
org.apache.taglibs.standard.tlv.JstlCoreTLV
</validator-class>
</validator-class><!-- JDBC??????? -->
<description>
Provides core validation features for JSTL tags.
</description>
</description><!-- ??JSTL????????? -->
</validator>
<tag>
<name>catch</name>
<name>catch</name><!-- ??????????? -->
<tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class>
<body-content>JSP</body-content>
<description>
Catches any Throwable that occurs in its body and optionally
exposes it.
</description>
</description><!-- ???????????? Throwable?????????? -->
<attribute>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>var</name> <!-- ????????????? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
</tag>
<tag>
<name>choose</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class>
<name>choose</name><!-- ??????????? -->
<tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class>
<body-content>JSP</body-content>
<description>
Simple conditional tag that establishes a context for
mutually exclusive conditional operations, marked by
&lt;when&gt; and &lt;otherwise&gt;
&lt;when&gt; and &lt;otherwise&gt;<!-- ?????????????????????? &lt;when&gt; ? &lt;otherwise&gt; ?? -->
</description>
</tag>
<tag>
<name>if</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.IfTag</tag-class>
<name>if</name> <!-- ??????????? -->
<tag-class>org.apache.taglibs.standard.tag.rt.core.IfTag</tag-class>
<body-content>JSP</body-content>
<description>
Simple conditional tag, which evalutes its body if the
supplied condition is true and optionally exposes a Boolean
scripting variable representing the evaluation of this condition
</description>
</description><!-- ??????????????????????????????????????????????? -->
<attribute>
<name>test</name>
<name>test</name><!-- ????????? -->
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>boolean</type>
<type>boolean</type><!-- ??????? -->
</attribute>
<attribute>
<name>var</name>
<name>var</name><!-- ???????????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
@ -89,8 +89,8 @@
</tag>
<tag>
<name>import</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ImportTag</tag-class>
<name>import</name> <!-- ????????????? -->
<tag-class>org.apache.taglibs.standard.tag.rt.core.ImportTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class>
<body-content>JSP</body-content>
<description>
@ -98,61 +98,61 @@
to either the maxPage, a String in 'var', or a Reader in 'varReader'.
</description>
<attribute>
<name>url</name>
<name>url</name><!-- ???????URL -->
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>var</name>
<name>var</name><!-- ???????????????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<rtexprvalue>false</rtexprvalue><!-- ??????????? -->
</attribute>
<attribute>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>scope</name> <!-- ????????????? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
<attribute>
<name>varReader</name>
<name>varReader</name><!-- ??????????????Reader?? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>context</name>
<name>context</name><!-- ???????????URL???? -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>charEncoding</name>
<name>charEncoding</name><!-- ??????????? -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<tag>
<name>forEach</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ForEachTag</tag-class>
<name>forEach</name> <!-- ???????????? -->
<tag-class>org.apache.taglibs.standard.tag.rt.core.ForEachTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class>
<body-content>JSP</body-content>
<description>
The basic iteration tag, accepting many different
collection types and supporting subsetting and other
functionality
</description>
</description><!-- ????????????????????????????? -->
<attribute>
<name>items</name>
<required>false</required>
<name>items</name><!-- ??????????? -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Object</type>
<type>java.lang.Object</type><!-- ????????Java?? -->
</attribute>
<attribute>
<name>begin</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>int</type>
<name>begin</name> <!-- ?????????????0???? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>true</rtexprvalue> <!-- ?????????? -->
<type>int</type> <!-- ???????? -->
</attribute>
<attribute>
<name>end</name>
<name>end</name><!-- ?????????????????? -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>int</type>
@ -164,8 +164,8 @@
<type>int</type>
</attribute>
<attribute>
<name>var</name>
<required>false</required>
<name>var</name><!-- ????????????????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
@ -176,7 +176,7 @@
</tag>
<tag>
<name>forTokens</name>
<name>forTokens</name> <!-- ??????????????? -->
<tag-class>org.apache.taglibs.standard.tag.rt.core.ForTokensTag</tag-class>
<body-content>JSP</body-content>
<description>
@ -213,13 +213,13 @@
<type>int</type>
</attribute>
<attribute>
<name>var</name>
<name>var</name> <!-- ???????????token????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>varStatus</name>
<required>false</required>
<name>varStatus</name> <!-- ???????????token????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>

@ -19,7 +19,7 @@
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<tlib-version>1.0</tlib-version><!--o-->
<jsp-version>1.2</jsp-version>
<short-name>c</short-name>
<uri>http://java.sun.com/jstl/core</uri>
@ -33,33 +33,33 @@
<init-param>
<param-name>expressionAttributes</param-name>
<param-value>
out:value
out:default
out:escapeXml
if:test
import:url
import:context
import:charEncoding
forEach:items
forEach:begin
forEach:end
forEach:step
forTokens:items
forTokens:begin
forTokens:end
forTokens:step
param:encode
param:name
param:value
redirect:context
redirect:url
set:property
set:target
set:value
url:context
url:value
when:test
</param-value>
out:value<!-- ?????? -->
out:default<!-- ???????? -->
out:escapeXml <!-- ?????XML?? -->
if:test <!-- if??????? -->
import:url <!-- import???URL -->
import:context <!-- import?????? -->
import:charEncoding <!-- import??????? -->
forEach:items <!-- forEach????? -->
forEach:begin <!-- forEach??????? -->
forEach:end <!-- forEach??????? -->
forEach:step <!-- forEach????? -->
forTokens:items <!-- forTokens????? -->
forTokens:begin <!-- forTokens??????? -->
forTokens:end <!-- forTokens??????? -->
forTokens:step <!-- forTokens????? -->
param:encode <!-- param????? -->
param:name <!-- param????? -->
param:value <!-- param???? -->
redirect:context<!-- redirect?????? -->
redirect:url<!-- redirect???URL -->
set:property <!-- set????? -->
set:target <!-- set??????? -->
set:value <!-- set???? -->
url:context <!-- url?????? -->
url:value <!-- url???? -->
when:test <!-- when??????? -->
</param-value>
<description>
Whitespace-separated list of colon-separated token pairs
describing tag:attribute combinations that accept expressions.
@ -78,9 +78,9 @@
exposes it.
</description>
<attribute>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>var</name> <!-- ????????? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
</tag>
@ -103,25 +103,25 @@
Like &lt;%= ... &gt;, but for expressions.
</description>
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
<name>value</name> <!-- ??????? -->
<required>true</required> <!-- ??????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
<attribute>
<name>default</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>default</name> <!-- ??? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
<attribute>
<name>escapeXml</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>escapeXml</name> <!-- ??????XML???? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
</tag>
<tag>
<name>if</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.IfTag</tag-class>
<name>if</name><!-- ?????? -->
<tag-class>org.apache.taglibs.standard.tag.el.core.IfTag</tag-class>
<body-content>JSP</body-content>
<description>
Simple conditional tag, which evalutes its body if the
@ -129,9 +129,9 @@
scripting variable representing the evaluation of this condition
</description>
<attribute>
<name>test</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
<name>test</name> <!-- ?????? -->
<required>true</required> <!-- ??????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
<attribute>
<name>var</name>
@ -139,14 +139,14 @@
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>scope</name> <!-- ????????????? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
</tag>
<tag>
<name>import</name>
<name>import</name> <!-- ????????????? -->
<tag-class>org.apache.taglibs.standard.tag.el.core.ImportTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class>
<body-content>JSP</body-content>
@ -155,40 +155,40 @@
to either the maxPage, a String in 'var', or a Reader in 'varReader'.
</description>
<attribute>
<name>url</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
<name>url</name> <!-- ????URL -->
<required>true</required> <!-- ??????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
<attribute>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>var</name> <!-- ???????????????? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
<attribute>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>scope</name> <!-- ??????????? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
<attribute>
<name>varReader</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>varReader</name> <!-- ???????Reader??????? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
<attribute>
<name>context</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>context</name> <!-- ?????????URL???? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
<attribute>
<name>charEncoding</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>charEncoding</name> <!-- ??????????? -->
<required>false</required> <!-- ???????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
</tag>
<tag>
<name>forEach</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.ForEachTag</tag-class>
<name>forEach</name> <!-- ???? -->
<tag-class>org.apache.taglibs.standard.tag.el.core.ForEachTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class>
<body-content>JSP</body-content>
<description>
@ -197,61 +197,61 @@
functionality
</description>
<attribute>
<name>items</name>
<required>false</required>
<name>items</name><!-- ?????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>begin</name>
<name>begin</name><!-- ??????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>end</name>
<name>end</name><!-- ??????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>step</name>
<required>false</required>
<name>step</name><!-- ????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>var</name>
<name>var</name><!-- ?????????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>varStatus</name>
<required>false</required>
<name>varStatus</name> <!-- ???????????????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>forTokens</name>
<name>forTokens</name> <!-- ???????token???? -->
<tag-class>org.apache.taglibs.standard.tag.el.core.ForTokensTag</tag-class>
<body-content>JSP</body-content>
<description>
Iterates over tokens, separated by the supplied delimeters
</description>
<attribute>
<name>items</name>
<name>items</name> <!-- ??????? -->
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>delims</name>
<name>delims</name> <!-- ??? -->
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>begin</name>
<name>begin</name> <!-- ??????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>end</name>
<name>end</name> <!-- ??????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
@ -303,56 +303,56 @@
</tag>
<tag>
<name>redirect</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.RedirectTag</tag-class>
<name>redirect</name><!-- ????? -->
<tag-class>org.apache.taglibs.standard.tag.el.core.RedirectTag</tag-class>
<body-content>JSP</body-content>
<description>
Redirects to a new URL.
</description>
<attribute>
<name>var</name>
<name>var</name><!-- ????????????????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>scope</name>
<name>scope</name> <!-- ??????????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>url</name>
<name>url</name> <!-- ?????????URL -->
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>context</name>
<name>context</name><!-- ?????????URL???? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>remove</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class>
<name>remove</name><!-- ?????????????????? -->
<tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class>
<body-content>empty</body-content>
<description>
Removes a scoped variable (from a particular scope, if specified).
</description>
<attribute>
<name>var</name>
<name>var</name><!-- ??????????? -->
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>scope</name>
<name>scope</name> <!-- ????????????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>set</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.SetTag</tag-class>
<name>set</name> <!-- ????????????scope????? -->
<tag-class>org.apache.taglibs.standard.tag.el.core.SetTag</tag-class>
<body-content>JSP</body-content>
<description>
Sets the result of an expression evaluation in a 'scope'
@ -385,25 +385,25 @@
</tag>
<tag>
<name>url</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.UrlTag</tag-class>
<name>url</name><!-- ??URL??? -->
<tag-class>org.apache.taglibs.standard.tag.el.core.UrlTag</tag-class>
<body-content>JSP</body-content>
<description>
Prints or exposes a URL with optional query parameters
(via the c:param tag).
</description>
<attribute>
<name>var</name>
<name>var</name> <!-- ??????????URL????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>scope</name>
<name>scope</name> <!-- ?????URL?????? -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<name>value</name> <!-- ???????URL -->
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
@ -415,17 +415,17 @@
</tag>
<tag>
<name>when</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.WhenTag</tag-class>
<name>when</name><!-- ????????????? -->
<tag-class>org.apache.taglibs.standard.tag.el.core.WhenTag</tag-class>
<body-content>JSP</body-content>
<description>
Subtag of &lt;choose&gt; that includes its body if its
condition evalutes to 'true'
</description>
<attribute>
<name>test</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
<name>test</name> <!-- ????????? -->
<required>true</required> <!-- ??????? -->
<rtexprvalue>false</rtexprvalue> <!-- ??????????? -->
</attribute>
</tag>

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
~ Copyright (c) 2019. 黄钰朝
~
@ -21,19 +22,31 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>JSTL 1.1 core library</description>
<display-name>JSTL core</display-name>
<tlib-version>1.1</tlib-version>
<short-name>c</short-name>
<uri>http://java.sun.com/jsp/jstl/core</uri>
<description>JSTL 1.1 core library</description><!-- 说明这是JSTL 1.1版本的核心库 -->
<display-name>JSTL core</display-name><!-- 在显示中用作JSTL核心的名称 -->
<tlib-version>1.1</tlib-version><!-- 标签库版本 -->
<short-name>c</short-name><!-- 标签库的简短名称 -->
<uri>http://java.sun.com/jsp/jstl/core</uri><!-- 标签库的URI用于JSP中引用 -->
<validator>
<validator>
<description>
Provides core validation features for JSTL tags.
</description>
<validator-class>
org.apache.taglibs.standard.tlv.JstlCoreTLV
</validator-class>
</validator-class><!-- 验证器类名称 -->
</validator>
<tag>
@ -41,30 +54,42 @@
Catches any Throwable that occurs in its body and optionally
exposes it.
</description>
<name>catch</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class>
<body-content>JSP</body-content>
<name>catch</name><!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class>
<body-content>JSP</body-content> <!-- 标签主体内容类型 -->
<attribute>
<description>
Name of the exported scoped variable for the
exception thrown from a nested action. The type of the
scoped variable is the type of the exception thrown.
</description>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>var</name><!-- 属性名称 -->
<required>false</required><!-- 是否为必需属性 -->
<rtexprvalue>false</rtexprvalue><!-- 是否允许运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Simple conditional tag that establishes a context for
mutually exclusive conditional operations, marked by
&lt;when&gt; and &lt;otherwise&gt;
</description>
<name>choose</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class>
<body-content>JSP</body-content>
<name>choose</name><!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class><!-- 标签类名 -->
<body-content>JSP</body-content><!-- 标签主体内容类型 -->
</tag>
<tag>
@ -73,18 +98,31 @@ scoped variable is the type of the exception thrown.
supplied condition is true and optionally exposes a Boolean
scripting variable representing the evaluation of this condition
</description>
<name>if</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.IfTag</tag-class>
<body-content>JSP</body-content>
<name>if</name><!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.core.IfTag</tag-class><!-- 标签类名 -->
<body-content>JSP</body-content><!-- 标签主体内容类型 -->
<attribute>
<description>
The test condition that determines whether or
not the body content should be processed.
</description>
<name>test</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>boolean</type>
<name>test</name><!-- 属性名称 -->
<required>true</required><!-- 必需属性 -->
<rtexprvalue>true</rtexprvalue><!-- 允许运行时表达式 -->
<type>boolean</type> <!-- 属性类型 -->
</attribute>
<attribute>
<description>
@ -92,17 +130,17 @@ Name of the exported scoped variable for the
resulting value of the test condition. The type
of the scoped variable is Boolean.
</description>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>var</name><!-- 属性名称 -->
<required>false</required><!-- 是否为必需属性 -->
<rtexprvalue>false</rtexprvalue><!-- 是否允许运行时表达式 -->
</attribute>
<attribute>
<description>
Scope for var.
</description>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>scope</name><!-- 属性名称 -->
<required>false</required><!-- 是否为必需属性 -->
<rtexprvalue>false</rtexprvalue> <!-- 是否允许运行时表达式 -->
</attribute>
</tag>
@ -111,9 +149,9 @@ Scope for var.
Retrieves an absolute or relative URL and exposes its contents
to either the maxPage, a String in 'var', or a Reader in 'varReader'.
</description>
<name>import</name>
<name>import</name><!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.core.ImportTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class>
<tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class><!-- TEI类 -->
<body-content>JSP</body-content>
<attribute>
<description>
@ -121,7 +159,7 @@ The URL of the resource to import.
</description>
<name>url</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<rtexprvalue>true</rtexprvalue><!-- 允许运行时表达式 -->
</attribute>
<attribute>
<description>
@ -172,6 +210,19 @@ resource.
</attribute>
</tag>
<tag>
<description>
The basic iteration tag, accepting many different
@ -258,35 +309,61 @@ visibility.
<description>
Iterates over tokens, separated by the supplied delimeters
</description>
<name>forTokens</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ForTokensTag</tag-class>
<body-content>JSP</body-content>
<name>forTokens</name><!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.core.ForTokensTag</tag-class>
<body-content>JSP</body-content><!-- 标签的主体内容类型 -->
<attribute>
<description>
String of tokens to iterate over.
</description>
<name>items</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
<name>items</name><!-- 要迭代的令牌字符串 -->
<required>true</required><!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 -->
<type>java.lang.String</type> <!-- 属性类型 -->
</attribute>
<attribute>
<description>
The set of delimiters (the characters that
separate the tokens in the string).
</description>
<name>delims</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
<name>delims</name><!-- 分隔符字符串 -->
<required>true</required><!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 -->
<type>java.lang.String</type><!-- 属性类型 -->
</attribute>
<attribute>
<description>
Iteration begins at the token located at the
specified index. First token has index 0.
</description>
<name>begin</name>
<required>false</required>
<name>begin</name><!-- 起始索引 -->
<required>false</required><!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue>
<type>int</type>
</attribute>
@ -295,8 +372,21 @@ specified index. First token has index 0.
Iteration ends at the token located at the
specified index (inclusive).
</description>
<name>end</name>
<required>false</required>
<name>end</name><!-- 结束索引 -->
<required>false</required><!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue>
<type>int</type>
</attribute>
@ -305,10 +395,10 @@ specified index (inclusive).
Iteration will only process every step tokens
of the string, starting with the first one.
</description>
<name>step</name>
<name>step</name> <!-- 步长 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>int</type>
<type>int</type><!-- 属性类型 -->
</attribute>
<attribute>
<description>
@ -316,9 +406,9 @@ Name of the exported scoped variable for the
current item of the iteration. This scoped
variable has nested visibility.
</description>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>var</name><!-- 当前项的作用域变量名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue><!-- 不允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
@ -329,9 +419,9 @@ javax.servlet.jsp.jstl.core.LoopTag
Status. This scoped variable has nested
visibility.
</description>
<name>varStatus</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>varStatus</name><!-- 迭代状态的作用域变量名称 -->
<required>false</required><!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue><!-- 不允许使用运行时表达式 -->
</attribute>
</tag>
@ -340,8 +430,8 @@ visibility.
Like &lt;%= ... &gt;, but for expressions.
</description>
<name>out</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.OutTag</tag-class>
<body-content>JSP</body-content>
<tag-class>org.apache.taglibs.standard.tag.rt.core.OutTag</tag-class><!-- 标签实现类 -->
<body-content>JSP</body-content>
<attribute>
<description>
Expression to be evaluated.
@ -387,14 +477,14 @@ true.
<description>
Adds a parameter to a containing 'import' tag's URL.
</description>
<name>param</name>
<name>param</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.core.ParamTag</tag-class>
<body-content>JSP</body-content>
<body-content>JSP</body-content><!-- 标签主体内容类型 -->
<attribute>
<description>
Name of the query string parameter.
</description>
<name>name</name>
<name>name</name><!-- 查询参数名称 -->
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
@ -402,7 +492,7 @@ Name of the query string parameter.
<description>
Value of the parameter.
</description>
<name>value</name>
<name>value</name><!-- 查询参数的值 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
@ -419,7 +509,7 @@ Value of the parameter.
<description>
The URL of the resource to redirect to.
</description>
<name>url</name>
<name>url</name><!-- 重定向的目标URL -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
@ -428,7 +518,7 @@ The URL of the resource to redirect to.
Name of the context when redirecting to a relative URL
resource that belongs to a foreign context.
</description>
<name>context</name>
<name>context</name><!-- 上下文名称 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
@ -440,21 +530,21 @@ resource that belongs to a foreign context.
</description>
<name>remove</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class>
<body-content>empty</body-content>
<attribute>
<body-content>empty</body-content><!-- 标签主体内容类型为空 -->
<attribute>
<description>
Name of the scoped variable to be removed.
</description>
<name>var</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
<name>var</name><!-- 要移除的作用域变量名 -->
<required>true</required><!-- 此属性是必须的 -->
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description>
Scope for var.
</description>
<name>scope</name>
<required>false</required>
<name>scope</name><!-- 作用域名 -->
<required>false</required><!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
@ -480,9 +570,9 @@ whatever type the value expression evaluates to.
<description>
Expression to be evaluated.
</description>
<name>value</name>
<name>value</name> <!-- 要评估的表达式 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
@ -490,7 +580,7 @@ Target object whose property will be set. Must evaluate to
a JavaBeans object with setter property property, or to a
java.util.Map object.
</description>
<name>target</name>
<name>target</name><!-- 目标对象 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
@ -498,7 +588,7 @@ java.util.Map object.
<description>
Name of the property to be set in the target object.
</description>
<name>property</name>
<name>property</name><!-- 要设置的目标对象的属性名称 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
@ -506,7 +596,7 @@ Name of the property to be set in the target object.
<description>
Scope for var.
</description>
<name>scope</name>
<name>scope</name> <!-- 作用域 -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
@ -525,7 +615,7 @@ Name of the exported scoped variable for the
processed url. The type of the scoped variable is
String.
</description>
<name>var</name>
<name>var</name><!-- 处理后的URL作用域变量名称 -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
@ -533,7 +623,7 @@ String.
<description>
Scope for var.
</description>
<name>scope</name>
<name>scope</name><!-- 作用域 -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
@ -541,7 +631,7 @@ Scope for var.
<description>
URL to be processed.
</description>
<name>value</name>
<name>value</name><!-- 要处理的URL -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
@ -550,7 +640,7 @@ URL to be processed.
Name of the context when specifying a relative URL
resource that belongs to a foreign context.
</description>
<name>context</name>
<name>context</name><!-- 上下文名称 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
~ Copyright (c) 2019. ???
@ -417,3 +418,181 @@
</tag>
</taglib>

@ -19,14 +19,16 @@
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>fmt</short-name>
<uri>http://java.sun.com/jstl/fmt</uri>
<display-name>JSTL fmt</display-name>
<description>JSTL 1.0 i18n-capable formatting library</description>
<tlib-version>1.0</tlib-version>
<!-- ??????-->
<jsp-version>1.2</jsp-version>
<short-name>fmt</short-name>
<uri>http://java.sun.com/jstl/fmt</uri>
<display-name>JSTL fmt</display-name>
<description>JSTL 1.0 i18n-capable formatting library</description>
<validator>
<validator-class>
org.apache.taglibs.standard.tlv.JstlFmtTLV
</validator-class>

@ -20,149 +20,157 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>JSTL 1.1 i18n-capable formatting library</description>
<display-name>JSTL fmt</display-name>
<tlib-version>1.1</tlib-version>
<short-name>fmt</short-name>
<uri>http://java.sun.com/jsp/jstl/fmt</uri>
<validator>
<description>
Provides core validation features for JSTL tags.
</description>
<validator-class>
org.apache.taglibs.standard.tlv.JstlFmtTLV
</validator-class>
</validator>
<tag>
<description>
Sets the request character encoding
</description>
<name>requestEncoding</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag</tag-class>
<body-content>empty</body-content>
<attribute>
<description>
Name of character encoding to be applied when
decoding request parameters.
</description>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<description>JSTL 1.1 i18n-capable formatting library</description> <!-- 描述JSTL 1.1 国际化支持的格式化库 -->
<display-name>JSTL fmt</display-name> <!-- 标签库的显示名称 -->
<tlib-version>1.1</tlib-version> <!-- 标签库的版本 -->
<short-name>fmt</short-name> <!-- 标签库的简短名称 -->
<uri>http://java.sun.com/jsp/jstl/fmt</uri> <!-- 标签库的URI -->
<tag>
<description>
Stores the given locale in the locale configuration variable
</description>
<name>setLocale</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag</tag-class>
<body-content>empty</body-content>
<attribute>
<description>
A String value is interpreted as the
printable representation of a locale, which
must contain a two-letter (lower-case)
language code (as defined by ISO-639),
and may contain a two-letter (upper-case)
country code (as defined by ISO-3166).
Language and country codes must be
separated by hyphen (-) or underscore
(_).
</description>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
Vendor- or browser-specific variant.
See the java.util.Locale javadocs for
more information on variants.
</description>
<name>variant</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
Scope of the locale configuration variable.
</description>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<description>
Specifies the time zone for any time formatting or parsing actions
nested in its body
</description>
<name>timeZone</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<description>
The time zone. A String value is interpreted as
a time zone ID. This may be one of the time zone
IDs supported by the Java platform (such as
"America/Los_Angeles") or a custom time zone
ID (such as "GMT-8"). See
java.util.TimeZone for more information on
supported time zone formats.
</description>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<tag>
<description>
Stores the given time zone in the time zone configuration variable
</description>
<name>setTimeZone</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag</tag-class>
<body-content>empty</body-content>
<attribute>
<description>
The time zone. A String value is interpreted as
a time zone ID. This may be one of the time zone
IDs supported by the Java platform (such as
"America/Los_Angeles") or a custom time zone
ID (such as "GMT-8"). See java.util.TimeZone for
more information on supported time zone
formats.
</description>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
Name of the exported scoped variable which
stores the time zone of type
java.util.TimeZone.
</description>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<validator>
<description>
Scope of var or the time zone configuration
variable.
Provides core validation features for JSTL tags. <!-- 描述提供JSTL标签的核心验证功能 -->
</description>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<validator-class>
org.apache.taglibs.standard.tlv.JstlFmtTLV
</validator-class><!-- 验证器类 -->
</validator>
<tag>
<description>
Sets the request character encoding <!-- 描述:设置请求的字符编码 -->
</description>
<name>requestEncoding</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag</tag-class> <!-- 标签实现类 -->
<body-content>empty</body-content> <!-- 标签主体内容为空 -->
<attribute>
<description>
Name of character encoding to be applied when decoding request parameters. <!-- 描述:在解码请求参数时应用的字符编码名称 -->
</description>
<name>value</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Stores the given locale in the locale configuration variable <!-- 描述:将给定的区域设置存储在区域配置变量中 -->
</description>
<name>setLocale</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag</tag-class> <!-- 标签实现类 -->
<body-content>empty</body-content> <!-- 标签主体内容为空 -->
<attribute>
<description>
A String value is interpreted as the printable representation of a locale, which must contain a two-letter (lower-case) language code (as defined by ISO-639), and may contain a two-letter (upper-case) country code (as defined by ISO-3166). Language and country codes must be separated by hyphen (-) or underscore (_). <!-- 描述字符串值被解释为区域的可打印表示必须包含一个两位小写语言代码根据ISO-639定义并且可以包含一个两位大写国家代码根据ISO-3166定义。语言和国家代码必须用连字符-或下划线_分隔。 -->
</description>
<name>value</name> <!-- 属性名称 -->
<required>true</required> <!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Vendor- or browser-specific variant. See the java.util.Locale javadocs for more information on variants. <!-- 描述供应商或浏览器特定的变体。有关变体的更多信息请参见java.util.Locale的Javadoc。 -->
</description>
<name>variant</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Scope of the locale configuration variable. <!-- 描述:区域配置变量的作用域 -->
</description>
<name>scope</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Specifies the time zone for any time formatting or parsing actions nested in its body <!-- 描述:指定其主体中嵌套的任何时间格式化或解析操作的时区 -->
</description>
<name>timeZone</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag</tag-class> <!-- 标签实现类 -->
<body-content>JSP</body-content> <!-- 标签主体内容为JSP -->
<attribute>
<description>
The time zone. A String value is interpreted as a time zone ID. This may be one of the time zone IDs supported by the Java platform (such as "America/Los_Angeles") or a custom time zone ID (such as "GMT-8"). See java.util.TimeZone for more information on supported time zone formats. <!-- 描述时区。字符串值被解释为时区ID。这可以是Java平台支持的时区ID之一如“America/Los_Angeles”或自定义时区ID如“GMT-8”。有关支持的时区格式的更多信息请参见java.util.TimeZone。 -->
</description>
<name>value</name> <!-- 属性名称 -->
<required>true</required> <!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Stores the given time zone in the time zone configuration variable <!-- 描述:将给定的时区存储在时区配置变量中 -->
</description>
<name>setTimeZone</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag</tag-class> <!-- 标签实现类 -->
<body-content>empty</body-content> <!-- 标签主体内容为空 -->
<attribute>
<description>
The time zone. A String value is interpreted as a time zone ID. This may be one of the time zone IDs supported by the Java platform (such as "America/Los_Angeles") or a custom time zone ID (such as "GMT-8"). See java.util.TimeZone for more information on supported time zone formats. <!-- 描述时区。字符串值被解释为时区ID。这可以是Java平台支持的时区ID之一如“America/Los_Angeles”或自定义时区ID如“GMT-8”。有关支持的时区格式的更多信息请参见java.util.TimeZone。 -->
</description>
<name>value</name> <!-- 属性名称 -->
<required>true</required> <!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Name of the exported scoped variable which stores the time zone of type java.util.TimeZone. <!-- 描述存储java.util.TimeZone类型的时区的导出作用域变量的名称。 -->
</description>
<name>var</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Scope of var or the time zone configuration variable. <!-- 描述var或时区配置变量的作用域。 -->
</description>
<name>scope</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Loads a resource bundle to be used by its tag body
@ -179,9 +187,9 @@ form as a fully-qualified class name, that is, it uses
have any file type (such as ".class" or ".properties")
suffix.
</description>
<name>basename</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<name>basename</name> <!-- 属性名称 -->
<required>true</required> <!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
@ -194,6 +202,11 @@ key of any nested &lt;fmt:message&gt; action.
</attribute>
</tag>
<tag>
<description>
Loads a resource bundle and stores it in the named scoped variable or
@ -211,9 +224,9 @@ form as a fully-qualified class name, that is, it uses
have any file type (such as ".class" or ".properties")
suffix.
</description>
<name>basename</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<name>basename</name> <!-- 属性名称 -->
<required>true</required> <!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
@ -222,114 +235,129 @@ the i18n localization context of type
javax.servlet.jsp.jstl.fmt.LocalizationC
ontext.
</description>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<name>var</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Scope of var or the localization context
configuration variable.
configuration variable.<!-- 描述var或本地化上下文配置变量的作用域。 -->
</description>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>scope</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Maps key to localized message and performs parametric replacement
Maps key to localized message and performs parametric replacement<!-- 描述:将键映射到本地化消息,并进行参数替换 -->
</description>
<name>message</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.MessageTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>message</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.MessageTag</tag-class> <!-- 标签实现类 -->
<body-content>JSP</body-content> <!-- 标签主体内容为JSP -->
<attribute>
<description>
Message key to be looked up.
Message key to be looked up.<!-- 描述:要查找的消息键。 -->
</description>
<name>key</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<name>key</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Localization context in whose resource
bundle the message key is looked up.
bundle the message key is looked up.<!-- 描述:在其资源包中查找消息键的本地化上下文。 -->
</description>
<name>bundle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<name>bundle</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<attribute>
<description>
Name of the exported scoped variable
which stores the localized message.
which stores the localized message.<!-- 描述:存储本地化消息的导出作用域变量的名称。 -->
</description>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>var</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Scope of var.
Scope of var.<!-- 描述var的作用域。 -->
</description>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>scope</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Supplies an argument for parametric replacement to a containing
&lt;message&gt; tag
&lt;message&gt; tag<!-- 描述:为包含的<message>标签提供参数替换的参数 -->
</description>
<name>param</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParamTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>param</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParamTag</tag-class> <!-- 标签实现类 -->
<body-content>JSP</body-content> <!-- 标签主体内容为JSP -->
<attribute>
<description>
Argument used for parametric replacement.
Argument used for parametric replacement.<!-- 描述:用于参数替换的参数。 -->
</description>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<name>value</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Formats a numeric value as a number, currency, or percentage
Formats a numeric value as a number, currency, or percentage<!-- 描述:将数字值格式化为数字、货币或百分比 -->
</description>
<name>formatNumber</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>formatNumber</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag</tag-class> <!-- 标签实现类 -->
<body-content>JSP</body-content> <!-- 标签主体内容为JSP -->
<attribute>
<description>
Numeric value to be formatted.
Numeric value to be formatted.<!-- 描述:要格式化的数字值。 -->
</description>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<name>value</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Specifies whether the value is to be
formatted as number, currency, or
percentage.
percentage.<!-- 描述:指定值是否格式化为数字、货币或百分比。 -->
</description>
<name>type</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<name>type</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Custom formatting pattern.
Custom formatting pattern.<!-- 描述:自定义格式化模式。 -->
</description>
<name>pattern</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<name>pattern</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
@ -337,9 +365,9 @@ ISO 4217 currency code. Applied only
when formatting currencies (i.e. if type is
equal to "currency"); ignored otherwise.
</description>
<name>currencyCode</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<name>currencyCode</name><!-- 属性名称 -->
<required>false</required><!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
@ -347,25 +375,30 @@ Currency symbol. Applied only when
formatting currencies (i.e. if type is equal
to "currency"); ignored otherwise.
</description>
<name>currencySymbol</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<name>currencySymbol</name><!-- 属性名称 -->
<required>false</required><!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
<description>
Specifies whether the formatted output
will contain any grouping separators.
</description>
<name>groupingUsed</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<name>groupingUsed</name><!-- 属性名称 -->
<required>false</required><!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Maximum number of digits in the integer
portion of the formatted output.
portion of the formatted output.<!-- 描述:自定义格式化模式。 -->
</description>
<name>maxIntegerDigits</name>
<name>maxIntegerDigits</name><!--max-->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
@ -373,7 +406,7 @@ portion of the formatted output.
<description>
Minimum number of digits in the integer
portion of the formatted output.
</description>
</description><!--注释货币-->
<name>minIntegerDigits</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
@ -381,11 +414,16 @@ portion of the formatted output.
<attribute>
<description>
Maximum number of digits in the
fractional portion of the formatted output.
fractional portion of the formatted output.<!--货币最大值-->
</description>
<name>maxFractionDigits</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
@ -402,17 +440,22 @@ Name of the exported scoped variable
which stores the formatted result as a
String.
</description>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>var</name><!--属性明1-->
<required>false</required><!---->
<rtexprvalue>false</rtexprvalue><!---->
</attribute>
<attribute>
<description>
Scope of var.
</description>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<name>scope</name><!---->
<required>false</required><!---->
<rtexprvalue>false</rtexprvalue><!---->
</attribute>
</tag>
@ -428,27 +471,37 @@ Scope of var.
String to be parsed.
</description>
<name>value</name>
<required>false</required>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
Specifies whether the string in the value
Specifies whether the string in the value<!---->
attribute should be parsed as a number,
currency, or percentage.
</description>
<name>type</name>
<required>false</required>
<required>false</required><!---->
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
Custom formatting pattern that determines
<!--Custom formatting pattern that determines
how the string in the value attribute is to be
parsed.
</description>
parsed.-->
</description><!---->
<name>pattern</name>
<required>false</required>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
@ -460,24 +513,29 @@ operation, or to which the pattern specified
via the pattern attribute (if present) is
applied.
</description>
<name>parseLocale</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<name>parseLocale</name><!---->
<required>false</required><!---->
<rtexprvalue>true</rtexprvalue><!---->
</attribute>
<attribute>
<description>
Specifies whether just the integer portion of
the given value should be parsed.
<!--Specifies whether just the integer portion of
the given value should be parsed.-->
</description>
<name>integerOnly</name>
<required>false</required>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
Name of the exported scoped variable which
<!--Name of the exported scoped variable which
stores the parsed result (of type
java.lang.Number).
java.lang.Number).-->
</description>
<name>var</name>
<required>false</required>
@ -487,7 +545,7 @@ java.lang.Number).
<description>
Scope of var.
</description>
<name>scope</name>
<name>scope</name><!-- 不允许使用运行时表达式 -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
@ -495,7 +553,7 @@ Scope of var.
<tag>
<description>
Formats a date and/or time using the supplied styles and pattern
<!--Formats a date and/or time using the supplied styles and pattern-->
</description>
<name>formatDate</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag</tag-class>
@ -505,9 +563,14 @@ Scope of var.
Date and/or time to be formatted.
</description>
<name>value</name>
<required>true</required>
<required>true</required><!-- 不允许使用运行时表达式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
</attribute>
<attribute>
<description>
Specifies whether the time, the date, or both
@ -515,7 +578,7 @@ the time and date components of the given
date are to be formatted.
</description>
<name>type</name>
<required>false</required>
<required>false</required><!-- 不允许使用运行时表达式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
@ -528,7 +591,12 @@ time (i.e. if type is missing or is equal to
"date" or "both"); ignored otherwise.
</description>
<name>dateStyle</name>
<required>false</required>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
@ -548,64 +616,69 @@ ignored otherwise.
<description>
Custom formatting style for dates and times.
</description>
<name>pattern</name>
<name>pattern</name><!-- 属性名称 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
</attribute><!-- 描述:自定义格式化模式。 -->
<attribute>
<description>
Time zone in which to represent the formatted
time.
</description>
<name>timeZone</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<rtexprvalue>true</rtexprvalue><!-- 描述:自定义格式化模式。 -->
</attribute>
<attribute>
<description>
Name of the exported scoped variable which
stores the formatted result as a String.
Name of the exported scoped variable which<!-- 描述:自定义格式化模式。 -->
stores the formatted result as a String.
</description>
<name>var</name>
<name>var</name><!-- 属性名称 -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description>
Scope of var.
</description>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</description><!---->
<name>scope</name><!-- 属性名称 -->
<required>false</required><!---->
<rtexprvalue>false</rtexprvalue><!-- 描述:自定义格式化模式。 -->
</attribute>
</tag>
<tag>
<description>
<description><!-- 描述:自定义格式化模式。 -->
Parses the string representation of a date and/or time
</description>
<name>parseDate</name>
<name>parseDate</name><!---->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<description>
Date string to be parsed.
</description>
<name>value</name>
<name>value</name><!-- 描述:自定义格式化模式。 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<rtexprvalue>true</rtexprvalue><!---->
</attribute>
<attribute>
<description>
Specifies whether the date string in the
value attribute is supposed to contain a
time, a date, or both.
</description>
<name>type</name>
</description><!-- 描述:自定义格式化模式。 -->
<name>type</name><!-- 属性名称 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<rtexprvalue>true</rtexprvalue><!-- 不允许使用运行时表达式 -->
</attribute>
<attribute>
<attribute><!---->
<description>
Predefined formatting style for days
which determines how the date
@ -615,10 +688,10 @@ date or both a date and time (i.e. if type
is missing or is equal to "date" or "both");
ignored otherwise.
</description>
<name>dateStyle</name>
<name>dateStyle</name><!-- 描述:自定义格式化模式。 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<rtexprvalue>true</rtexprvalue><!-- 不允许使用运行时表达式 -->
</attribute><!---->
<attribute>
<description>
Predefined formatting styles for times
@ -628,28 +701,33 @@ parsed. Applied only when formatting a
time or both a date and time (i.e. if type
is equal to "time" or "both"); ignored
otherwise.
</description>
<name>timeStyle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</description><!---->
<name>timeStyle</name><!-- 属性名称 -->
<required>false</required><!-- 描述:自定义格式化模式。 -->
<rtexprvalue>true</rtexprvalue><!-- 不允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
<description><!---->
Custom formatting pattern which
determines how the date string is to be
parsed.
</description>
<name>pattern</name>
<name>pattern</name><!-- 属性名称 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
<description><!---->
Time zone in which to interpret any time
information in the date string.
information in the date string.<!-- 描述:自定义格式化模式。 -->
</description>
<name>timeZone</name>
<required>false</required>
<name>timeZone</name><!-- 属性名称 -->
<required>false</required><!-- 不允许使用运行时表达式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
@ -660,28 +738,33 @@ the parse operation, or to which the
pattern specified via the pattern
attribute (if present) is applied.
</description>
<name>parseLocale</name>
<name>parseLocale</name><!-- 属性名称 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Name of the exported scoped variable in
<description><!-- 描述:自定义格式化模式。 -->
Name of the exported scoped variable in
which the parsing result (of type
java.util.Date) is stored.
</description>
<name>var</name>
<name>var</name><!-- 属性名称 -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<rtexprvalue>false</rtexprvalue><!-- 不允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Scope of var.
</description>
<name>scope</name>
<description><!-- 描述:自定义格式化模式。 -->
Scope of var.
</description>
<name>scope</name><!-- 属性名称 -->
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<rtexprvalue>false</rtexprvalue><!-- 不允许使用运行时表达式 -->
</attribute><!-- 描述:自定义格式化模式。 -->
</tag>
</taglib>

@ -1,5 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
~ Copyright (c) 2019. 黄钰朝
~
@ -16,41 +20,81 @@
~ limitations under the License.
-->
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<!-- 描述JSTL 1.1函数库 -->
<description>JSTL 1.1 functions library</description>
<!-- 显示名称 -->
<display-name>JSTL functions</display-name>
<!-- JSTL版本 -->
<tlib-version>1.1</tlib-version>
<!-- 短名称 -->
<short-name>fn</short-name>
<!-- URI -->
<uri>http://java.sun.com/jsp/jstl/functions</uri>
<!-- 定义一个函数 -->
<function>
<!-- 函数描述 -->
<description>
Tests if an input string contains the specified substring.
</description>
<!-- 函数名称 -->
<name>contains</name>
<!-- 函数所属类 -->
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<!-- 函数签名 -->
<function-signature>boolean contains(java.lang.String, java.lang.String)</function-signature>
<!-- 函数示例 -->
<example>
&lt;c:if test="${fn:contains(name, searchString)}">
</example>
</function>
<!-- 定义一个函数 -->
<function>
<!-- 函数描述 -->
<description>
Tests if an input string contains the specified substring in a case insensitive way.
</description>
<!-- 函数名称 -->
<name>containsIgnoreCase</name>
<!-- 函数所属类 -->
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<!-- 函数签名 -->
<function-signature>boolean containsIgnoreCase(java.lang.String, java.lang.String)</function-signature>
<!-- 函数示例 -->
<example>
&lt;c:if test="${fn:containsIgnoreCase(name, searchString)}">
</example>
</function>
<!-- 测试输入字符串是否以指定的后缀结尾 -->
<function>
<description>
Tests if an input string ends with the specified suffix.
@ -63,6 +107,8 @@
</example>
</function>
<!-- 转义XML标记 -->
<function>
<description>
Escapes characters that could be interpreted as XML markup.
@ -75,6 +121,8 @@
</example>
</function>
<!-- 返回字符串中指定子字符串第一次出现的索引 -->
<function>
<description>
Returns the index withing a string of the first occurrence of a specified substring.
@ -87,6 +135,10 @@
</example>
</function>
<!-- 将数组的所有元素连接成一个字符串 -->
<!-- 将数组中的所有元素连接成一个字符串 -->
<function>
<description>
Joins all elements of an array into a string.
@ -99,6 +151,8 @@
</example>
</function>
<!-- 返回集合中的项目数,或字符串中的字符数 -->
<function>
<description>
Returns the number of items in a collection, or the number of characters in a string.
@ -111,6 +165,8 @@
</example>
</function>
<!-- 返回一个字符串,该字符串是通过将输入字符串中的所有"before"字符串替换为"after"子字符串得到的 -->
<function>
<description>
Returns a string resulting from replacing in an input string all occurrences
@ -124,6 +180,10 @@
</example>
</function>
<!-- 将字符串分割成一个子字符串数组 -->
<!-- 将字符串分割成子字符串数组 -->
<function>
<description>
Splits a string into an array of substrings.
@ -136,6 +196,8 @@
</example>
</function>
<!-- 测试输入字符串是否以指定的前缀开头 -->
<function>
<description>
Tests if an input string starts with the specified prefix.
@ -148,6 +210,8 @@
</example>
</function>
<!-- 返回字符串的子集 -->
<function>
<description>
Returns a subset of a string.
@ -160,6 +224,8 @@
</example>
</function>
<!-- 返回字符串在特定子字符串之后的子集 -->
<function>
<description>
Returns a subset of a string following a specific substring.
@ -172,6 +238,8 @@
</example>
</function>
<!-- 返回字符串在特定子字符串之前的子集 -->
<function>
<description>
Returns a subset of a string before a specific substring.
@ -184,6 +252,8 @@
</example>
</function>
<!-- 将字符串中的所有字符转换为小写 -->
<function>
<description>
Converts all of the characters of a string to lower case.
@ -196,6 +266,8 @@
</example>
</function>
<!-- 将字符串中的所有字符转换为大写 -->
<function>
<description>
Converts all of the characters of a string to upper case.
@ -208,6 +280,8 @@
</example>
</function>
<!-- 去除字符串两端的空白字符 -->
<function>
<description>
Removes white spaces from both ends of a string.
@ -221,3 +295,301 @@
</function>
</taglib>
<?xml version="1.0" encoding="UTF-8" ?>
<!--
~ Copyright (c) 2019. 黄钰朝
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<!-- 描述JSTL 1.1函数库 -->
<description>JSTL 1.1 functions library</description>
<!-- 显示名称 -->
<display-name>JSTL functions</display-name>
<!-- JSTL版本 -->
<tlib-version>1.1</tlib-version>
<!-- 短名称 -->
<short-name>fn</short-name>
<!-- URI -->
<uri>http://java.sun.com/jsp/jstl/functions</uri>
<!-- 定义一个函数 -->
<function>
<!-- 函数描述 -->
<description>
Tests if an input string contains the specified substring.
</description>
<!-- 函数名称 -->
<name>contains</name>
<!-- 函数所属类 -->
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<!-- 函数签名 -->
<function-signature>boolean contains(java.lang.String, java.lang.String)</function-signature>
<!-- 函数示例 -->
<example>
&lt;c:if test="${fn:contains(name, searchString)}">
</example>
</function>
<!-- 定义一个函数 -->
<function>
<!-- 函数描述 -->
<description>
Tests if an input string contains the specified substring in a case insensitive way.
</description>
<!-- 函数名称 -->
<name>containsIgnoreCase</name>
<!-- 函数所属类 -->
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<!-- 函数签名 -->
<function-signature>boolean containsIgnoreCase(java.lang.String, java.lang.String)</function-signature>
<!-- 函数示例 -->
<example>
&lt;c:if test="${fn:containsIgnoreCase(name, searchString)}">
</example>
</function>
<!-- 测试输入字符串是否以指定的后缀结尾 -->
<function>
<description>
Tests if an input string ends with the specified suffix.
</description>
<name>endsWith</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>boolean endsWith(java.lang.String, java.lang.String)</function-signature>
<example>
&lt;c:if test="${fn:endsWith(filename, ".txt")}">
</example>
</function>
<!-- 转义XML标记 -->
<function>
<description>
Escapes characters that could be interpreted as XML markup.
</description>
<name>escapeXml</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String escapeXml(java.lang.String)</function-signature>
<example>
${fn:escapeXml(param:info)}
</example>
</function>
<!-- 返回字符串中指定子字符串第一次出现的索引 -->
<function>
<description>
Returns the index withing a string of the first occurrence of a specified substring.
</description>
<name>indexOf</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>int indexOf(java.lang.String, java.lang.String)</function-signature>
<example>
${fn:indexOf(name, "-")}
</example>
</function>
<!-- 将数组的所有元素连接成一个字符串 -->
<!-- 将数组中的所有元素连接成一个字符串 -->
<function>
<description>
Joins all elements of an array into a string.
</description>
<name>join</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String join(java.lang.String[], java.lang.String)</function-signature>
<example>
${fn:join(array, ";")}
</example>
</function>
<!-- 返回集合中的项目数,或字符串中的字符数 -->
<function>
<description>
Returns the number of items in a collection, or the number of characters in a string.
</description>
<name>length</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>int length(java.lang.Object)</function-signature>
<example>
You have ${fn:length(shoppingCart.products)} in your shopping cart.
</example>
</function>
<!-- 返回一个字符串,该字符串是通过将输入字符串中的所有"before"字符串替换为"after"子字符串得到的 -->
<function>
<description>
Returns a string resulting from replacing in an input string all occurrences
of a "before" string into an "after" substring.
</description>
<name>replace</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String replace(java.lang.String, java.lang.String, java.lang.String)</function-signature>
<example>
${fn:replace(text, "-", "&#149;")}
</example>
</function>
<!-- 将字符串分割成一个子字符串数组 -->
<!-- 将字符串分割成子字符串数组 -->
<function>
<description>
Splits a string into an array of substrings.
</description>
<name>split</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String[] split(java.lang.String, java.lang.String)</function-signature>
<example>
${fn:split(customerNames, ";")}
</example>
</function>
<!-- 测试输入字符串是否以指定的前缀开头 -->
<function>
<description>
Tests if an input string starts with the specified prefix.
</description>
<name>startsWith</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>boolean startsWith(java.lang.String, java.lang.String)</function-signature>
<example>
&lt;c:if test="${fn:startsWith(product.id, "100-")}">
</example>
</function>
<!-- 返回字符串的子集 -->
<function>
<description>
Returns a subset of a string.
</description>
<name>substring</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String substring(java.lang.String, int, int)</function-signature>
<example>
P.O. Box: ${fn:substring(zip, 6, -1)}
</example>
</function>
<!-- 返回字符串在特定子字符串之后的子集 -->
<function>
<description>
Returns a subset of a string following a specific substring.
</description>
<name>substringAfter</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String substringAfter(java.lang.String, java.lang.String)</function-signature>
<example>
P.O. Box: ${fn:substringAfter(zip, "-")}
</example>
</function>
<!-- 返回字符串在特定子字符串之前的子集 -->
<function>
<description>
Returns a subset of a string before a specific substring.
</description>
<name>substringBefore</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String substringBefore(java.lang.String, java.lang.String)</function-signature>
<example>
Zip (without P.O. Box): ${fn:substringBefore(zip, "-")}
</example>
</function>
<!-- 将字符串中的所有字符转换为小写 -->
<function>
<description>
Converts all of the characters of a string to lower case.
</description>
<name>toLowerCase</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String toLowerCase(java.lang.String)</function-signature>
<example>
Product name: ${fn.toLowerCase(product.name)}
</example>
</function>
<!-- 将字符串中的所有字符转换为大写 -->
<function>
<description>
Converts all of the characters of a string to upper case.
</description>
<name>toUpperCase</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String toUpperCase(java.lang.String)</function-signature>
<example>
Product name: ${fn.UpperCase(product.name)}
</example>
</function>
<!-- 去除字符串两端的空白字符 -->
<function>
<description>
Removes white spaces from both ends of a string.
</description>
<name>trim</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String trim(java.lang.String)</function-signature>
<example>
Name: ${fn.trim(name)}
</example>
</function>
</taglib>

@ -1,5 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
~ Copyright (c) 2019. 黄钰朝
~
@ -16,29 +19,58 @@
~ limitations under the License.
-->
<!-- 定义一个标签库 -->
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<!-- 标签库的描述 -->
<description>
Restricts JSP pages to the JSTL tag libraries
</description>
</description>
<!-- 标签库的显示名称 -->
<display-name>permittedTaglibs</display-name>
<!-- 标签库的版本号 -->
<tlib-version>1.1</tlib-version>
<!-- 标签库的简称 -->
<short-name>permittedTaglibs</short-name>
<!-- 标签库的URI -->
<uri>http://jakarta.apache.org/taglibs/standard/permittedTaglibs</uri>
<!-- 验证器 -->
<validator>
<!-- 验证器的类 -->
<validator-class>
javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV
</validator-class>
<!-- 初始化参数 -->
<init-param>
<!-- 参数的描述 -->
<description>
Whitespace-separated list of taglib URIs to permit. This example
TLD for the Standard Taglib allows only JSTL 'el' taglibs to be
imported.
</description>
<!-- 参数的名称 -->
<param-name>permittedTaglibs</param-name>
<!-- 参数的值 -->
<param-value>
http://java.sun.com/jsp/jstl/core
http://java.sun.com/jsp/jstl/fmt

@ -24,7 +24,12 @@
Validates JSP pages to prohibit use of scripting elements.
</description>
<tlib-version>1.1</tlib-version>
<!--版本序号-->
<short-name>scriptfree</short-name>
<!--段字符-->
<uri>http://jakarta.apache.org/taglibs/standard/scriptfree</uri>
<validator>
@ -40,6 +45,11 @@
</description>
<param-name>allowDeclarations</param-name>
<param-value>false</param-value>
<!--类别方式-->
</init-param>
<init-param>
<description>
@ -52,10 +62,19 @@
<description>
Controls whether or not top-level expressions are considered valid.
</description>
<param-name>allowExpressions</param-name>
<param-name>allowExpressions</param-name><!-- 属性类型 -->
<param-value>false</param-value>
</init-param>
<init-param>
<init-param><!-- 当前项的作用域变量名称 -->
<description>
Controls whether or not expressions used to supply request-time
attribute values are considered valid.

File diff suppressed because it is too large Load Diff

@ -34,7 +34,7 @@
</br>
<strong><p align="center">${message}</p></strong>
</br>
</div>
</div><!--ok-->
</div>
<hr>
</body>

Loading…
Cancel
Save