Struts标记库

手把手拆解:储能电站如何实现‘孤岛运行’与‘黑启动’?从SVPWM控制到无缝并网 本文深入解析储能电站的孤岛运行与黑启动技术,从SVPWM控制策略到电网重构实战。通过详细的三环控制架构和黑启动五阶段技术路线,展示储能电站在电网故障时如何快速切换为独立电压源并实现电网重建。文章还探讨了虚拟惯量补偿、多站协同控制等前沿技术,为电力系统应急恢复提供关键解决方案。 阅读详情
Schensheng913 [原作] 

JSP视窗组件所使用的struts标记库由四类标记组成: 
2. Bean标记:用来在JSP页中管理bean 
3. 逻辑标记:用来在JSP页中控制流程 
4. HTML标记:用来生成HTML标记,在表单中显示数据,使用会话ID对URL进行编程 
5. 模板标记:使用动态模板构造普通格式的页 
2.1 Bean标记 
这个标记库中包含用于定义新bean、访问bean及其属性的标记。Struts框架提供了多种自定义标记用来在JSP页中处理JavaBean。这些标记被封装在一个普通的标记库中,在文件struts-bean.tld中定义了它的标记库描述器。Bean标记库将标记定义在四个子类别中: 
创建和复制bean的标记 
脚本变量定义标记 
bean翻译标记 
消息国际化标记 
2.1.1 Bean复制标记 
可定义新bean,可复制现有bean,还可从现有bean复制属性。 
<bean:define>标记用来: 
定义新字符串常数 
将现有的bean复制到新定义的bean对象 
复制现有bean的属性来创建新的bean 
<bean:define>标记属性: 
属性描述Id 新定义的bean脚本变量名称,必须设置Type 定义引入脚本变量的类value 为id属性定义的脚本变量分配一个新的对象Name 目标bean的名称。若value属性没有设置,这个属性就必须设置property Name属性定义的bean的属性名称,用来定义新的bean 
13 
Scope 源bean的作用域。若没有设置,搜索范围是从页作用域到应用程序作用域toScope 目标bean的作用域。若没有设置,默认值是页作用域 
例如:定义一个bean: 
<bean:define id=”test” value=”this is a test”/> 
源bean在页作用域中被拷贝大哦请求作用域中的另一个bean: 
<bean:define id=”targetBean” name=”sourceBean” 
scope=”page” toScope=”request”/> 
2.1.2 定义脚本变量的标记 
从多种资源中定义和生成脚本变量,这些资源包括cookie,请求参数,HTTP标头等等。属性如下: 
属性描述Id 脚本变量和要定义的页作用域属性的名称Name cookie/标头/参数的名称multiple 如果这个属性设置了任意一个数值,所有匹配的cookie都会被积累并存储到一个Cookie[](一个数组)类型的bean里。若无设置,指定cookie的第一个值将作为Cookie类型的值value 如果没有匹配的cookie或数值,就返回这个属性指定的默认值 
例如: 
<bean:cookie id=”myCookie” name=”userName”/> 
脚本变量名称是myCookie,用来创建这个属性的cookie的名称是userName。 
<bean:header id=”myHeader” name=”Accept-Language”/> 
脚本变量名称是myHeader,请求标头的名称是Accept-Language. 
<bean:parameter id=”myParameter” name=”myParameter”> 
脚本变量名称是myPatameter,它保存的请求参数的名称也是myParameter. 
<bean:include>标记将对一个资源的响应进行检索,并引入一个脚本变量和字符串类型的页作用域属性。这个资源可以是一个页,一个ActionForward或一个外部URL。与<jsp:include>的不同是资源的响应被存储到一个页作用域的bean中,而不是写入到输出流。属性如下: 
属性描述Id 脚本变量和要定义的页作用域属性的名称Page 一个内部资源forward 一个ActionForward Href 要包含的资源的完整URL 
例如: 
<bean:include id=”myInclude” page=”MyJsp?x=1”/> 
脚本变量的名称是myInclude,要检索的响应来自资源MyJsp?x=1。 
<bean:resource>标记将检索web应用中的资源,并引入一个脚本变量和InputStream或字符串类型的页作用域属性。如果在检索资源时发生问题,就会产生一个请求时间异常。属性如下: 
属性描述 
14 
Id 脚本变量和要定义的页作用域属性的名称Name 资源的相对路径Input 如果这个属性不存在,资源的类型就是字符串 
例如: 
<bean:resource id=”myResource” name=”/WEB-INF/images/myResource.xml”/> 
脚本变量的名称是myResource,要检索的资源的名称是myResource.xml。 
2.1.3 显示Bean属性 
标记库中定义了<bean:write>标记,用来将bean的属性输送到封装的JSP页写入器。这个标记与<jsp:getProperty>类似,属性如下: 
属性描述Name 要进行属性显示的bean的名称property 要显示的属性的名称。如果这个属性类有java.beans.PropertyEditor,getAsText()或toString 方法会被调用Scope Bean的作用域,若没有设置,搜索范围是从页到应用程序作用域Filter 如果设置true,属性中的所有特殊HTML字符都将被转化为相应的实体引用Ignore 如果设置false,当发现属性时会产生一个请求时间异常,否则返回null 
例如: 
<bean:write name=”myBean” property=”myProperty” scope=”request” 
filter=”true”/> 
myBean的属性myProperty将会被显示,作用域为请求,如果发现任何HTML特殊字符都将被转化为相应的实体引用。 
2.1.4 消息标记和国际化 
strtus框架支持国际化和本地化。用户在他们的计算机中定义自己所在的区域,当web应用程序需要输出一条消息时,它将引用一个资源文件,在这个文件中所有的消息都使用了适当的语言。一个应用程序可能提供了很多资源文件,每个文件提供了用不同语言编写的消息。如果没有找到所选语言的资源文件,就将使用默认的资源文件。 
struts框架对国际化的支持是使用<bean:message>标记,以及使用java.util数据包中定义的Locale和ResourceBundle类来实现Java2平台对这些任务的支持。Java.text.MessageFormat类定义的技术可以支持消息的格式。利用此功能,开发人员不需了解这些类的细节就可进行国际化和设置消息的格式。 
用strtus实现国际化和本地化: 
第一步要定义资源文件的名称,这个文件会包含用默认语言编写的在程序中会出现的所有消息。这些消息以“关键字-值”的形式存储,如下: 
error.validation.location = The entered location is invalid 
这个文件需要存储在类的路径下,而且它的路径要作为初始化参数传送给ActionServlet作为参数进行传递时,路径的格式要符合完整Java类的标准命名规范。比如,如果资源文件存储在WEB-INF/classes目录中,文件名是 
15 
ApplicationResources.properties,那么需要传递的参数值是ApplicationResources。如果文件在WEB-INF/classes/com/test中,那么参数值就应该是com.test. ApplicationResources. 
为了实现国际化,所有的资源文件必须都存储在基本资源文件所在的目录中。基本资源文件包含的是用默认地区语言-本地语言编写的消息。如果基本资源文件的名称是ApplicationResources.properties,那么用其他特定语言编写的资源文件的名称就应该是ApplicationResources_xx.properties(xx为ISO编码,如英语是en)。因此这些文件应包含相同的关键字,但关键字的值是用特定语言编写的。 
ActionServlet的区域初始化参数必须与一个true值一起传送,这样ActionServlet就会在用户会话中的Action.LOCALE_KEY关键字下存储一个特定用户计算机的区域对象。现在可以运行一个国际化的web站点,它可以根据用户计算机上的设置的区域自动以相应的语言显示。 
我们还可以使用特定的字符串来替换部分消息,就象用java.text.MessageFormat的方法一样: 
error.invalid.number = The number {0} is valid 
我们可以把字符串{0}替换成任何我们需要的数字。<bean:message>标签属性如下: 
属性描述Key 资源文件中定义消息关键字Locale 用户会话中存储的区域对象的属性名称。若没有设置,默认值是Action.LOCALE_KEY Bundle 在应用程序上下文中,存储资源对象的属性的名称。如果没有设置这个属性,默认值是Action.MESSAGE_KEY arg0 第一个替换参数值arg1 第二个替换参数值arg2 第三个替换参数值arg3 第四个替换参数值 
例如:资源文件中定义了一个消息: 
info.myKey = The numbers entered are {0},{1},{2},{3} 
我们可使用下面的消息标记: 
<bean:message key=”info.myKey” arg0=”5” arg1=”6” arg2=”7” arg3=”8”/> 
这个信息标记输出到JSP页会显示为:The numbers entered are 5,6,7,8 
2.2 逻辑标记 
逻辑库的标记能够用来处理外观逻辑而不需要使用scriptlet。Struts逻辑标签库包含的标记能够有条件地产生输出文本,在对象集合中循环从而重复地产生输出文本,以及应用程序流程控制。它也提供了一组在JSP页中处理流程控制的标记。这些标记封装在文件名为struts-logic.tld的标记包中。逻辑标记库定义的标记能够执行下列三个功能: 
条件逻辑 
重复 
转发/重定向响应 
16 
2.2.1 条件逻辑 
struts有三类条件逻辑。第一类可以比较下列实体与一个常数的大小: 
cookie 
请求参数 
bean或bean的参数 
请求标头 
以下列出了这一类标记: 
标记功能<equal> 如果常数与被定义的实体相等,返回true <notEqual> 如果常数与被定义的实体不相等,返回true <greaterEqual> 如果常数大于等于被定义的实体,返回true <lessEqual> 如果常数小于等于被定义的实体,返回true <lessThan> 如果常数小于被定义的实体,返回true <greaterThan> 如果常数大于被定义的实体,返回true 
这一类的所有标记有相同的属性 
属性描述value 要进行比较的常数值Cookie 要进行比较的HTTP cookie的名称Header 要进行比较的HTTP请求标头的名称parameter 要进行比较的HTTP请求参数的名称Name 如果要进行比较的是bean或bean的属性,则这个属性代表bean的名称property 要进行比较的bean属性的名称Scope Bean的作用域,如果没有指定作用域,则它的搜索范围是从页到应用程序 
例如: 
<logic:equal parameter=”name” value=”SomeName”> 
The entered name is SomeName 
</logic:equal> 
判断名为”name”的请求参数的值是否是”SomeName”。 
<logic:greaterThan name=”bean” property=”prop” scope=”page” value=”7”> 
The value of bean.Prop is greater than 7 
</logic:greaterThan> 
判断在页的作用域中是否有一个名为”bean”的bean,它有一个prop属性,这个属性的值是否大于7。如果这个属性能够转化为数值,就进行数值比较,否则就进行字符串比较。 
第二类条件标记定义了两个标记: 
<logic:present> 
<logic:notPresent> 
它们的功能是在计算标记体之前判断特定的项目是否存在。标记的属性和属性值决定了要进行检查的项目。 
属性描述 
17 
Cookie 由这个属性指定的cookie将被检查是否存在Header 由这个属性指定的请求标头将被检查是否存在parameter 由这个属性指定的请求参数将被检查是否存在Name 如果没有设置property属性,那么有这个属性指定的bean将被检查是否存在。如果设置了,那么bean和bean属性都将被检查是否存在。property 检查有name属性指定的bean中是否存在指定的属性Scope 如果指定了bean的名称,这就是bean的作用域。如果没有指定作用域,搜索的范围从页到应用程序作用域。Role 检查当前已经确认的用户是否属于特殊的角色User 检查当前已经确认的用户是否有特定的名称 
例如: 
<logic:notPresent name=”bean” property=”prop” scope=”page”> 
The bean property bean.prop is present 
</logic:notPresent> 
标记判断在页作用域中是否存在一个名为”bean”的bean,这个bean有一个prop属性。 
第三类条件标记比较复杂,这些标记根据模板匹配的结果检查标记体的内容。换句话说,这些标记判断一个指定项目的值是否是一个特定常数的子字符串: 
<logic:match> 
<logic:notMatch> 
这些标记允许JSP引擎在发现了匹配或是没有发现时计算标记主体。属性如下: 
属性描述Cookie 要进行比较的HTTP cookie的名称Header 要进行比较的的HTTP标头的名称parameter 要进行比较的的HTTP请求参数的名称Name 若要对bean或bean的属性进行比较,这个属性是用户指定bean的名称location 如果设置了这个属性的值,将会在这个指定的位置(索引值)进行匹配scope 如果对bean进行比较,这个属性指定了bean的作用域。如果没有设置这个参数,搜索范围是从页到应用程序作用域property 要进行比较的bean的属性名称value 要进行比较的常数值 
例如: 
<logic:match parameter=”name” value=”xyz” location=”1”> 
The parameter name is a sub-string of the string xyz from index 1 
</logic:match> 
标记检查名为”name”的请求参数是否是”xyz”的子字符串,但是子字符串必须从”xyz”的索引位置1开始(也就是说子字符串必须是”y”或”yz”)。 
2.2.2 重复标记 
在逻辑标记库中定义了<logic:iterate>标记,它能够根据特定集合中元素的数目对标记体的内容进行重复的检查。集合的类型可以是java.util.Iterator,java.util.Collection 
18 
,java.util.Map或是一个数组。有三种方法可以定义这个集合: 
使用运行时间表达式来返回一个属性集合的集合 
将集合定义为bean,并且使用name属性指定存储属性的名称。 
使用name属性定义一个bean,并且使用property属性定义一个返回集合的bean属性。 
当前元素的集合会被定义为一个页作用域的bean。属性如下,所有这些属性都能使用运行时表达式。 
属性描述collection 如果没有设置name属性,它就指定了要进行重复的集合Id 页作用域bean和脚本变量的名称,它保存着集合中当前元素的句柄indexed 页作用域JSP bean的名称,它包含着每次重复完成后集合的当前索引Length 重复的最大次数Name 作为集合的bean的名称,或是一个bean名称,它由property属性定义的属性,是个集合Offset 重复开始位置的索引property 作为集合的Bean属性的名称Scope 如果指定了bean名称,这个属性设置bean的作用域。若没有设置,搜索范围从页到应用程序作用域Type 为当前定义的页作用域bean的类型 
例如: 
<logic:iterate id=”currentInt” 
collection=”<% =myList %>” 
type=”java.lang.Integer” 
offset=”1” 
length=”2”> 
<% =currentint %> 
</logic:iterate> 
代码将从列表中的第一个元素开始重复两个元素并且能够让当前元素作为页作用域和java.lang.Integer类型的脚本变量来使用。也就是说,如果myList包含元素1,2,3,4等,代码将会打印1和2。 
2.2.3 转发和重定向标记 
转发标记 
<logic:forward>标记能够将响应转发给重定向到特定的全局ActionForward上。ActionForward的类型决定了是使用PageContext转发响应,还是使用sendRedirect将响应进行重定向。此标记只有一个”name”属性,用来指定全局ActionForward的名称,例如: 
<logic:forward name=”myGlobalForward”/> 
重定向标记 
<logic:redirect>标记是一个能够执行HTTP重定向的强大工具。根据指定的不同属性,它能够通过不同的方式实现重定向。它还允许开发人员指定重定向URL的查询参数。属性如下: 
19 
属性描述Forward 映射了资源相对路径的ActionForward Href 资源的完整URL Page 资源的相对路径Name Map类型的页名称,请求,会话或程序属性的名称,其中包含要附加大哦重定向URL(如果没有设置property属性)上的“名称-值”参数。或是具有Map类型属性的bean名称,其中包含相同的信息(没有设置property属性) Property Map类型的bean属性的名称。Bean的名称由name属性指定。Scope 如果指定了bean的名称,这个属性指定搜索bean的范围。如果没有设置,搜索范围从页到应用程序作用域ParamID 定义特定查询参数的名称ParamName 字符串类型的bean的名称,其中包含查询参数的值(如果没有设置paramProperty属性);或是一个bean的名称,它的属性(在paramProperty属性中指定)包含了查询参数值paramProperty 字符串bean属性的名称,其中包含着查询参数的值ParamScope ParamName定义的bean的搜索范围 
使用这个标记时至少要指定forward,href或page中的一个属性,以便标明将响应重定向到哪个资源。 
2.3 HTML标记 
Struts HTML标记可以大致地分为以下几个功能: 
显示表单元素和输入控件 
显示错误信息 
显示其他HTML元素 
2.3.1 显示表单元素和输入控件 
struts将HTML表单与为表单操作而定义的ActionForm bean紧密联系在一起。表单输入字段的名称与ActionForm bean里定义的属性名称是对应的。当第一次显示表单时,表单的输入字段是从ActionForm bean中移植过来的,当表单被提交时,请求参数将移植到ActionForm bean实例。 
所有可以在<form>标记中使用的用来显示HTML输入控件的内嵌标记都使用下列属性来定义javascript事件处理器。 
属性描述Onblur 字段失去了焦点Onchange 字段失去了焦点并且数值被更改了onclick 字段被鼠标点击Ondblclick 字段被鼠标双击Onfocus 字段接收到输入焦点onkeydown 字段拥有焦点并且有键按下 
20 
onkeypress 字段拥有焦点并且有键按下并释放onkeyup 字段拥有焦点并且有键被释放onmousedown 鼠标指针指向字段并且点击onmousemove 鼠标指针指向字段并且在字段内移动onmouseout 鼠标指针指向控件,但是指针在元素外围移动onmouseover 鼠标指针没有指向字段,但是指针在元素内部移动onmouseup 鼠标指针指向字段,并且释放了鼠标按键 
<form>元素中能够被定义的其他一般属性有: 
属性描述Accesskey 定义访问输入字段的快捷键Style 定义输入字段的样式styleClass 定义输入字段的样式表类Tabindex 输入字段的tab顺序 
a) 表单标记 
<html:form>标记用来显示HTML标记,可以指定AcitonForm bean的名称和它的类名。如果没有设置这些属性,就需要有配置文件来指定ActionMapping以表明当前输入的是哪个JSP页,以及从映射中检索的bean名和类。如果在ActionMapping指定的作用域中没有找到指定的名称,就会创建并存储一个新的bean,否则将使用找到的bean。 
<form>标记能够包含与各种HTML输入字段相对应的子标记。 
<html:form>标记属性如下: 
属性描述Action 与表单相关的操作。在配置中,这个操作也用来标识与表单相关的ActionForm bean Enctype 表单HTTP方法的编码类型Focus 表单中需要初始化焦点的字段Method 表单使用的HTTP方法Name 与表单相关的ActionForm bean的名称。如果没有设置这个属性,bean的名称将会从配置信息中获得Onreset 表单复位时的javascript事件句柄Onsubmit 表单提交时的javascript事件句柄Scope 搜索ActionForm bean的范围。如果没有设置,将从配置文件中获取Style 使用的格式styleClass 这个元素的格式表类Type ActionForm bean的完整名称。如果没有设置,将从配置文件获得 
例如: 
<html:form action=”validateEmploee.do” method=”post”> 
</html:form> 
与表单相关的操作路径是validateEmployee,而表单数据是通过POST传递的。对于这个表单来说,ActionForm bean的其他信息,如bean名称类型,作用域,都是从表单指定操作的ActionMapping中检索得到的: 
21 
<form-beans> 
<form-bean name=”empForm” type=”com.example.EmployeeForm”/> 
</form-beans> 
<action-mappings> 
<action path=”/validateEmployee” 
type=”com.example.ValidateExampleAction” 
name=”empForm” 
scope=”request” 
input=”/employeeInput.jsp”> 
<forward name=”success” path=”/employeeOutput.jsp”> 
</action> 
</action-mapping> 
如果配置文件中包含上述信息,并且请求URI的*.do被映射到ActionServlet,与表单相关的ActionForm bean的名称,类型和作用域分别是empForm,com.example.EmployeeForm和request.这些属性也可以使用<html:form>标记属性进行显示的定义。 
以下标记必须嵌套在<html:form>标记里 
b) 按钮和取消标记 
<html:button>标记显示一个按钮控件;<html:cancel>标记显示一个取消按钮。属性如下: 
属性描述Property 定义在表单被提交时返回到服务器的请求参数的名称value 按钮上的标记 
c) 复位和提交标记 
<html:reset>和<html:submit>标记分别能够显示HTML复位按钮和提交按钮。 
d) 文本和文本区标记 
<html:text>和<html:textarea>标记分别HTML文本框和文本区,属性如下: 
属性描述Property 定义当表单被提交时送回到服务器的请求参数的名称,或用来确定文本元素当前值的bean的属性名称Name 属性被查询的bean的名称,它决定了文本框和文本区的值。如果没有设置,将使用与这个内嵌表单相关的ActionForm的名称 
<html:text>标记还有以下属性: 
属性描述Maxlength 能够输入的最大字符数 
22 
Size 文本框的大小(字符数) 
<html:textarea>标记特有的属性如下: 
属性描述Rows 文本区的行数Cols 文本区的列数 
e) 检查框和复选框标记 
<html:checkbox>标记能够显示检查框控件。<html:multibox>标记能够显示HTML复选框控件,请求对象在传递检查框名称时使用的getParametervalues()调用将返回一个字符串数组。属性如下: 
属性描述Name Bean的名称,其属性会被用来确定检查是否以选中的状态显示。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean的名称。Property 检查框的名称,也是决定检查框是否以选中的状态显示的bean属性名称。在复选框的情况下,这个属性必须是一个数组。value 当检查框被选中时返回到服务器的请求参数的值 
例如: 
<html:checkbox property=”married” value=”Y”/> 
一个名为married的检查框,在表单提交时会返回一个”Y”. 
f) 文件标记 
<html:file>标记可以显示HTML文件控件。属性如下: 
属性描述Name Bean的名称,它的属性将确定文件控件中显示的内容。如果没设置,将使用与内嵌表单相关的ActionForm bean的名称property 这个属性定义了当表单被提交时送回到服务器的请求参数的名称,以及用来确定文件控件中显示内容的bean属性名称Accept 服务器能够处理的内容类型集。它也将对客户浏览器对话框中的可选文件类型进行过滤value 按钮上的标记,这个按钮能够在本地文件系统中浏览文件 
g) 单选钮标记 
<html:radio>标记用来显示HTML单选钮控件,属性如下: 
属性描述Name Bean的名称,其属性会被用来确定单选钮是否以选中的状态显示。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean的名称。property 当表单被提交时送回到服务器的请求参数的名称,以及用来确定单选钮是否以被选中状态进行显示的bean属性的名称 
23 
value 当单选钮被选中时返回到服务器的值 
h) 隐藏标记 
<html:hidden>标记能够显示HTML隐藏输入元素,属性如下: 
属性描述Name Bean的名称,其属性会被用来确定隐藏元素的当前值。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean的名称。property 定义了当表单被提交时送回到服务器的请求参数的名称,以及用来确定隐藏元素当前值的bean属性的名称value 用来初始化隐藏输入元素的值 
i) 密码标记 
<html:password>标记能够显示HTML密码控件,属性如下: 
属性描述maxlength 能够输入的最大字符数Name Bean的名称,它的属性将用来确定密码元素的当前值。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean的名称。property 定义了当表单被提交时送回到服务器的请求参数的名称,以及用来确定密码元素当前值的bean属性的名称redisplay 在显示这个字段时,如果相应的bean属性已经被设置了数据,这个属性决定了是否显示密码的内容Size 字段的大小 
j) 选择标记 
<html:select>标记能够显示HTML选择控件,属性如下: 
属性描述multiple 表明这个选择控件是否允许进行多选Name Bean的名称,它的属性确定了哪个。如果没有设置,将使用与这个内嵌表单相关的ActionFrom bean的名称。property 定义了当表单被提交时送回到服务器的请求参数的名称,以及用来确定哪个选项需要被选中的bean属性的名称Size 能够同时显示的选项数目value 用来表明需要被选中的选项 
k) 选项标记(这个元素需要嵌套在<html:select>标记里) 
<html:option>标记用来显示HTML选项元素集合,属性如下: 
24 
属性描述collection Bean集合的名称,这个集合存储在某个作用域的属性中。选项的数目与集合中元素的数目相同。Property属性能够定义选项值所使用的bean属性,而labelProperty属性定义选项标记所使用的bean的属性labelName 用来指定存储于某个作用域的bean,这个bean是一个字符串的集合,能够定义<html:option>元素的标记(如果标志与值不相同) labelProperty 与collection属性共同使用时,用来定义了存储于某个作用域的bean,这个bean将返回一个字符串集合,能够用来写入<html:option>元素的value属性Name 如果这是唯一被指定的属性,它就定义了存储于某个作用域的bean,这个bean将返回一个字符串集合,能够用来写入<html:option>元素的value属性property 这个属性在与collection属性共同使用时,定义了每个要显示选项值的独立bean的name属性。如果不是与collection属性共同使用,这个属性定义了由name属性指定的bean的属性名称(如果有name属性),或是定义了一个ActionForm bean,这个bean将返回一个集合来写入选项的值 
我们看一下这个标记的一些例子: 
<html:option collection=”optionCollection” property=”optionvalue” 
labelProperty=”optionLabel”/> 
标记假设在某个作用域中有一个名为optionCollection的集合,它包含了一些具有optionvalue属性的独立的bean,每个属性将作为一个选项的值。每个选项的标志由bean的optionLabel属性属性进行定义。 
<html:option name=”optionvalues” labelName=”optionLabels”/> 
标记中optionvalues代表一个存储在某个作用域中的bean,它是一个字符串集合,能够用来写入选项的值,而optionLabels代表一个存储在某个作用域中的bean,它也是一个字符串集合,能够用来写入选项的标志。 
2.3.2.显示错误信息的标记 
<html:errors>标记能够与ActionErrors结合在一起来显示错误信息。这个标记首先要从当前区域的资源文件中读取消息关键字errors.header,然后显示消息的文本。接下去它会在ActionErrors对象(通常作为请求参数而存储在Action.ERROR_KEY关键字下)中循环,读取单个ActionError对象的消息关键字,从当前区域的资源文件中读取并格式化相应的消息,并且显示它们。然后它读取与errors.footer关键字相对应的消息并且显示出来。 
通过定义property属性能够过滤要显示的消息,这个属性的值应该与ActionErrors对象中存储ActionError对象的关键字对应。属性如下: 
属性描述Bundle 表示应用程序作用域属性的名称,它包含着消息资源,其默认值Acion.MESSAGE_KEY Locale 表示会话作用域属性的名称,它存储着用户当前登录的区域信息。其默认值是Action.ERROR_KEY 
25 
Name 表示请求属性的名称,它存储着ActionErrors对象。其默认值是Action.ERROR_KEY property 这个属性指定了ActionErrors对象中存储每个独立ActionError对象的关键字,它可以过滤消息 
例子: 
<html:errors/> 
显示集合中所有的错误。 
<html:errors property=”missing.name”/> 
显示存储在missing.name关键字的错误。 
2.3.3.其他HTML标记 
struts HTML标记还定义了下列标记来显示其他HTML元素: 
<html:html> : 显示HTML元素 
<html:img> : 显示图象标记 
<html:link> : 显示HTML链接或锚点 
<html:rewrite> : 创建没有锚点标记的URI 
这些标记的详细内容请参照struts文档。 
2.4. 模板标记 
动态模板是模块化WEB页布局设计的强大手段。Struts模板标记库定义了自定义标记来实现动态模板。 
2.4.1.插入标记 
<template:insert>标记能够在应用程序的JSP页中插入动态模板。这个标记只有一个template属性,用来定义模板JSP页。要插入到模板的页是有多个<template:put>标记来指定的,而这些标记被定义为<template:insert>标记的主体内容。 
2.4.2.放置标记 
<template:put>标记是<template:insert>标记内部使用的,用来指定插入到模板的资源。属性如下: 
属性描述content 定义要插入的内容,比如一个JSP文件或一个HTML文件direct 如果这个设置为true,由content属性指定的内容将直接显示在JSP上而不是作为包含文件Name 要插入的内容的名称Role 如果设置了这个属性,只有在当前合法用户具有特定角色时才能进行内容的插入。 
26 
2.4.3.获得标记 
在模板JSP页中使用<template:get>标记能够检索由<template:put>标记插入到JSP页的资源。属性如下: 
属性描述Name 由<template:put>标记插入的内容的名称Role 如果设置了这个属性,只有在当前合法用户具有特定角色时才能进行内容的检索 
2.4.4.使用模板标记 
首先编写一个模板JSP页,它将被所有的web页使用: 
<html> 
<%@ taglib uri=”/template” prefix=”template” %> 
<head> 
<title></title> 
</head> 
<body> 
<table width=”100%” height=”100%” > 
<tr height=”10%”> 
<td> 
<template:get name=”header”/> 
</td> 
</tr> 
<tr height=”80%”> 
<td> 
<template:get name=”content”/> 
</td> 
</tr> 
<tr height=”10%”> 
<td> 
<template:get name=”footer”/> 
</td> 
</tr> 
</table> 
</body> 
</html> 
我们将这个文件命名为template.jsp。这个文件使用<template:get>标记来获得由JSP页使用<template:put>标记提供的内容,并且将内容在一个HTML表格中显示出来。这三个内容是标题,内容和页脚。典型的内容JSP会是这样: 
<%@ taglib uri=”/template” prefix=”/template” %> 
<template:insert template=”template.jsp”> 
<template:put name=”header” content=”header.html”/> 
27 
<template:put name=”content” content=”employeeList.jsp”/> 
<template:put name=”footer” content=”footer.html”/> 
</template:insert> 
这个应用程序JSP页使用<template:insert标记来定义模板,然后使用<template:put>标记将特定内容名称指定的资源放到模板JSP页中。如果我们有上百个布局相同的页,但突然想改变这个模板,我们只需要改变template.jsp文件。

ESP32-IDF开发之旅 基础篇⑨ ESP-IDF的FreeRTOS任务间通信和同步 本文介绍了FreeRTOS任务间通信中的队列机制,重点讲解了队列的创建、发送和接收数据的API使用方法。文章提供了详细的技术说明和示例代码,包括xQueueCreate、xQueueSend、xQueueReceive等核心函数的参数说明和返回值解释。通过一个2生产者+1消费者的实际案例,展示了如何在ESP-IDF环境下使用FreeRTOS队列实现任务间通信。示例中包含了数据发送失败处理和接收数据验证等实用技巧,为开发者提供了可参考的实现模式。 阅读详情

相关推荐

Labelme AI-Polygon闪退排查与修复指南

本文详细介绍了Labelme AI-Polygon功能闪退问题的排查与修复方法,包括环境配置检查、模型路径设置、依赖库版本控制等关键步骤。通过系统性的解决方案和实用技巧,帮助用户快速解决闪退问题,确保数据标注工作的高效进行。

weixin_29311017的博客 140

Struts:标签库

1,Struts2标签库概述 Struts2标签库相对于Struts1进行了巨大的改进,支持OGNL表达式,不依赖任何表现层技术(可以在各种表现层技术中使用)。 我们可以在struts2-core-xxx.jar压缩文件的META-INF目录下找到struts-tags.tld文件,这个文件里定义了Struts2的标签。 Struts2对整个标签库提供了严格的分类,Strut2把所有标签都定义在一个s标签库里。虽然Struts2把所有的标签都定义在URI为"/struts-tags"的空间下,但依然

燕双嘤 1929

告别配置噩梦:用Vcpkg三行命令为Easy3D自动安装Boost、CGAL和Qt(VS2022实测)

本文详细介绍了如何使用Vcpkg工具在VS2022环境下为Easy3D项目一键安装Boost、CGAL和Qt等依赖库,解决传统手动配置的复杂性问题。通过三行简单命令即可自动完成下载、编译和路径配置,大幅提升开发效率,特别适合C++开发者快速搭建3D图形开发环境。

weixin_42525582的博客 210

struts之标签库

导读: JSP Struts之HTML标签库详解 Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。         标签库 说明         HTML 标签 用来创建能够和 Struts 框架和其他相应的 HTML 标签交互的 HTML 输入表单         Bean 标签 在访问 JavaBeans 及其属性

python二级题库 1157

ubuntu安装hodoop详细步骤

进入到Ubuntu系统中打开桌面,点击鼠标右键打开终端,在终端中输入如下命令这样就可以创建一名为hadoop的新用户。给用户输设置密码输入,输入如下命令,设置密码,按提示输入两次然后为hadoop用户增加管理员全新,这样就可以方便部署完成之后输入重启命令,重启一下Ubuntu系统,然后登录到我们创建的hadoop用户上面reboot。

2301_77603488的博客 9199

硬件工程师入门进阶,一文搞懂,看这篇就对了

每家公司的datasheet都有严格的规范,及独特的风格,有时候还会穿插一些原理性的介绍,比如ADI公司的一些ADC/DAC器件资料里面,还会包含AD/DA转换的原理性讲解内容,Datasheet既可以是我们设计上的好帮手,也是学习的好资料。在出货量大的产品中,尽量减少物料种类,比如开头说的,1%的电阻不得不用,那么5%的替换成1%的,物料种类就减少一种,量就大了,能不能争取更优的价格呢?如果说前面学的是内功,那这一关,是招式、是工具的使用,原理图和PCB设计都有对应的工具,教程也很多,且比较容易上手。

一路带飞的博客 5万+

struts 标签库

为了更容易、更快速地进行开发,Struts提供了功能同其它JSP标签库类似的五个标签库,即:HTML 、Bean、Logic、Template和Nested。下面我们来一一介绍这五个标签的作用和用法。一. html 标签HTML标签库主要用来显示HTML元素,如果不用这种方法,你就必须用HTML标签来指定它们。从表面上看,这个标签库很简单。但是通过深入研究,我们就会发现它很

hoojo 1600

高德地图可视化入门:零基础用Python+高德API打造你的第一个热力图

本文详细介绍了如何使用Python和高德地图API从零构建商业级热力图。通过环境配置、地理编码、数据清洗到最终可视化展示的全流程指南,帮助开发者快速掌握地图可视化技术,特别适合展示商圈人流、疫情热点等地理分布数据。

weixin_29053067的博客 305

常用Struts标签库

 Struts标签库是一个JSP自定义标签的集合,根据其内标签功能和使用习惯的不同,Struts提供了以下5个标签库。 Bean Tags:这个标签库内的标签可用来管理Bean,包括访问Bean、访问Bean的属性及创建Bean。 HTML Tags:这个标签库内的标签可用来生成HTML表单。 Logic Tags:这个标签库内的标签可用来进行逻辑判

hoojo 1923

uniapp - 最新微信小程序手机号一键登录功能效果,uniapp小程序实现手机号码一键登录,uniapp微信小程序端通过手机号授权完成立即登录操作(详细示例源码,新手小白一键复制开箱即用)

uniapp,微信小程序,uniapp小程序平台,uniApp手机号一键登录,uniapp小程序端手机号一键登录功能,实现微信小程序手机号一键登录,在uniapp中实现获取手机一键登录功能,uniapp手机号快捷登录,uniapp微信小程序授权登录并获取手机号,微信小程序手机号快速验证组件调用方式,uniapp小程序怎么用手机号一键登录,uniapp一键登录流程及代码,如何获取手机号一键登录到小程序,微信小程序获取本机手机号一键登录功能,新手详细教程,详细手机一键登录完整示例代码,uni-app微信unia

✅ 精选推荐文章 1万+

YOLOv11低照度增强主干网络PE-YOLO:原理与完整实现教程

编码器部分# 解码器部分self.dec_conv2 = nn.Conv2d(512, 128, 3, padding=1) # 跳跃连接self.dec_conv3 = nn.Conv2d(256, 64, 3, padding=1) # 跳跃连接self.dec_conv4 = nn.Conv2d(128, 32, 3, padding=1) # 跳跃连接# 编码路径# 解码路径(带跳跃连接)

FJN110的博客 725

Struts 标记库

Struts标记库 JSP视窗组件所使用的struts标记库由四类标记组成: 2. Bean标记:用来在JSP页中管理bean 3. 逻辑标记:用来在JSP页中控制流程 4. HTML标记:用来生成HTML标记,在表单中显示数据,使用会话ID对URL进行编程 5. 模板标记:使用动态模板构造普通格式的页 2.1 Bean标记 这个标记库中包含用于定义新bean、访问bean及其属性的标记。Stru

Calvin's Palace 659

java毕设:基于springboot的服装搭配推荐系统(springboot+layui+jq+html)1011

项目描述 基于springboot的服装搭配推荐系统: 基于天气服装搭配推荐系统为用户提供未来一周的天气预报情况,并根据预报天气和用户现有的服装进行着装搭配,以及显示未来6小时精确温度数据为用户提供更精确的天气信息便于用户在出行前对自己的着装进行调整,每日用户可以根据自己当日对系统推荐的着装搭配舒适度进行反馈,系统将根据用户的反馈对用户着装的保暖系数进行相应调整,通过多次的反馈和调整形成对用户着装的个体化和精确化的推荐。 本系统可以为用户提供以下服务: 1.未来五天的天气信息显示; 2.未来六小时内天气温度

qq_2537071370的博客 3646

Struts Logic标记库

 Struts Logic标记库 逻辑库的标记能够用来处理外观逻辑而不需要使用scriptlet。Struts逻辑标签库包含的标记能够有条件地产生输出文本,在对象集合中循环从而重复地产生输出文本,以及应用程序流程控制。它也提供了一组在JSP页中处理流程控制的标记。这些标记封装在文件名为struts-logic.tld的标记包中。 一、             比较标记 

含泪播种的人 1785

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

struts标记库(转载)

Struts标记库 JSP视窗组件所使用的struts标记库由四类标记组成: 1. Bean标记:用来在JSP页中管理bean 2. 逻辑标记:用来在JSP页中控制流程 3. HTML标记:用来生成HTML标记,在表单中显示数据,使用会话ID对URL进行编程 4. 模板标记:使用动态模板构造普通格式的页 一、Bean标记 这个标记库中包含用于定义新bean、访问bean及其属性的标记。Struts

风流一掌 1203

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

web.xml中配置struts标记库

Struts 框架提供了6个核心的标记库,供应用程序使用,每个标记库各有不同的用途。它们分别是:HTML,Bean,Logic,Nested,Template,Tiles标记库,在Struts1.3之前的版本中使用这些标记库的时候必须要先在web.xml文件中向web应用程序注册这些标记库。方法如下(用HTML举例):            /tags/struts-html//这个路径值

千年孤寂 1292

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

struts的bean标记库

点击88DOC.COM查找更多稳当struts的bean标记库是对jsp的标准标记库的增强,除了提供基本的jsp:userBean、jsp:setProperty等标记的基本功能,还支持对多种对象的操作,从多种对象生产javaBean,提供了更方便的读、写Bean的方法。         以下是从其官方网站的User Guide摘抄的对其功能的描述,    Introduce A

云飘 1114

Struts标记库使用帮助

Struts标记库 JSP视窗组件所使用的struts标记库由四类标记组成: 2. Bean标记:用来在JSP页中管理bean 3. 逻辑标记:用来在JSP页中控制流程 4. HTML标记:用来生成HTML标记,在表单中显示数据,使用会话ID对URL进行编程 5. 模板标记:使用动态模板构造普通格式的页 2.1 Bean标记 这个标记库中包含用于定义新bean、访问bean及其属性的标记。Stru

我的世界我的梦 979
上一篇: Java集合框架(Java Collections Framework,JCF)
下一篇: HTTP请求头概述
sswt
博客等级 码龄24年 1粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值