博文
nested标记库(2007-03-13 10:43:00)
摘要:它的出现在只要为了解决两个问题
1. 如果嵌套层次结构中的一个对象发生改变,则必须更新每个嵌套的引用。
2. 当使用一个具有若干字段的嵌套对象时需要重复列出每个字段的全部嵌套层次结构。如“student.family.fatherName”。
大部分嵌套标记跟html一样,有三个新的标记
nested:nest
定义一个嵌套级别
nested:writeNesting
输出当前字段的完整嵌套级别
nested:root
定义根级别
注意:当定义一个嵌套的JavaBean时,初始化时要给他创建实例。如:
SomeBean some = new SomeBean();而不是想下面一样简单的声明:
SomeBean some;
一个实例
/taglib/nest/index.jsp:
<html:form action="/student">
<nested:nest property="student">
姓名:<nested:text property="name"/><br>
年龄:<nested:text property="age"/><br>
<nested:nest pro......
logic标记库(2007-03-13 10:41:00)
摘要:逻辑比较运算
logic:equal/logic:notEqual
logic:equal变量等于常量时结果为true,否则为false。
logic:notEqual变量不等于常量时结果为true
logic:greaterEqual/logic:greaterThan
logic:greaterEqual变量大于或等于常量时结果为true,否则为false。
logic:greaterThan变量大于常量时结果为true,否则为false。
logic:lessEqual/ logic:lessThan
logic:lessEqual变量小于或等于常量时结果为true,否则为false。
logic:lessThan变量小于常量时结果为true,否则为false。
用法
所有比较运算标记都比较一个变量和一个常量的大小。如果结果为true,则执行标签主体的内容,否则不执行任何动作。
常量由value属性指定。变量可以有五种指定方法
1. 使用cookie属性指定变量为某个cookie的关键字的名称。
2. 使用header属性指定变量为HTTP头的某个关键字的名称。
3. 使用parameter属性指定变量为某个请求参数
4. 使用name属性指定变量为任何范围的某个已存在的变量。若指定了scope属性则变量限定在由scope指定的某个范围里
5. 使用name和property属性指定变量为任何范围的某个已存在的JavaBean的某个字段。若指定了scope属性则变量限定在由scope指定的某个范围里
注意
1. 如果变量不存在则比较结果为false,而不是抛出异常。
2. 如果两个字符串都可以转换成数字,就比较数字的大小,否则进行字符串的比较如:
<%
request.setAttribute("str","100");
%&......
bean标记库(2007-03-13 10:38:00)
摘要:bean:cookie
根据cookie的键检索一个cookie,将其值赋给在id属性,并保存在本地范围和页面范围里。
value和multiple功能跟header一样
当使用bean:write时,其name属性对应bean:cookie的id属性,property属性值必须是“value”。
bean:header
bean:header标记用于将HTTP请求头中的某个信息的String对象存储在page范围和本地范围内的JSP脚本变量中。
如果指定了multiple属性。可以存储同一名称的多个标题。如:如果传入请求具有名称同为“Accept-Language”的两个标题,则将使用String[]数组来捕获每个标题值。然后将此数组存储在由id属性指定的JSP变量中。
value属性用于如果传入请求中不存在指定资源时指定一个默认值。
bean:parameter
bean:parameter标记将HTTP请求参数保存在page范围和本地范围内的JSP脚本变量中。
指定了multiple属性可以将同名参数的多个参数值保存到page范围和本地范围内的一个数组(String[])中。
value属性表示:如果name属性指定的要查找的参数不存在,则则将创建一个新的String对象,并将value属性的值赋给这个对象,然后同时存储在page范围和本地范围里
bean:page
检索JSP隐式对象,包括application, config, request, response,和 session,然后放在本地范围和页面范围里。
id属性值不能为application, config, request, response,和 session。因为此标签会将变量保存在本地范围里。但本地范围已经存在application, config, request, response,和 session这些变量了。其实此标签的主要功能是将这些隐式对象保存在页面范围里了。用bean:write只能在page不能读取存放在本地范围里的变量。
访问Web资源
bean:message
访问指定资源束的一个键值对。
bundle属性指定使用哪个资源束
key指定关键字的名称
locale 用于限定语言环境
scope 指定查找name属性指定的对象时的......
补遗(2007-03-13 10:36:00)
摘要:有些标记是“精通Struts基于MVC 的Java Web设计与开发.pdf”中被讨论到的
html:image
生成一个HTML的<input type=”image”>标记
html:javascript
html:password
密码框 生成HTML的<input type=”password”>标记
html:textarea
可以使用cols和rows设定行列数
html:xhtml......
HTML标记库 - 错误信息标记(2007-03-13 10:35:00)
摘要:html:errors
name属性:指定ActionMessages对象存放在request和session范围内的属性key。默认值为Globals.ERROR_KEY。
property属性:指定显示属性。如果此项没有则显示ActionMessages对象中的所有ActionMessage。
bundle属性:指定特定的资源束文件。
html:messages
message属性:如果为true,则从request和session范围内检索出属性key为Globals.MESSAGE_KEY的ActionMessages对象,此时name属性无效。如果为false,则和html:errors一样根据name属性来检索ActionMessages对象, 如果此时没有设置name属性,将采用默认值GlobalsERROR_KEY。message属性的默认值为false。
id属性:用来命名从信息集合中检索出的每个ActionMessage对象,它和bean:write标记的name属性匹配。然后an:write将此信息输出。......
HTML标记库 - 文件上传(2007-03-13 10:34:00)
摘要:html:file
参考”struts学习笔记.doc”
自编的一个的文件上传类
com.cn.rolia.util.struts.upload .UploadUtil.java
package com.cn.rolia.util.struts.upload;
import org.apache.struts.upload.FormFile;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashSet;
import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* @author rolia
*
*/
public class UploadUtil {
/*
* FormFile,表示要上传的文件
*/
FormFile file;
/**
&nb......
HTML标记库 - 下拉列表多选列表(2007-03-13 10:31:00)
摘要:html:select
html:select 生成一个HTML的<select>标记,可以使用multiple 属性创建单选或多选列表。
multiple属性设置是否可以多选
size 设置页面显示多少个,单选默认为1,多选默认为全部。
html:option
label值有两个来源:
1. <html:option>和</html:option>之间的内容
<html:option value=”1”>大一</html:option>
2. 使用html:option标签的key、locale和bundle属性
<html:option value=”1” bundle=”school” key=”grade”/>
bundle指定资源束,locale指定特定的语言环境,key指定资源束中的特定键。
在struts-config.xml中定义了如下的资源束:
struts-config.xml:
<message-resources parameter=”cn.rolia.struts. ApplicationResources” key=”school”/>
html:options
可以将可选的值放到一个集合中,然后用html:options将此集合作为select的值。
先在页面范围里定义一个Vector,在html:option中的collection属性指定为这个Vector:
<%
Vector colors = new Vector();
colors.add(new org.apache.struts.util.LabelValueBean("粉红色","pink"));
colors.add(new org.apache.struts.util.LabelValueBean("紫色","purple"));
colors.add(new org.apache.struts.util.LabelValueB......
HTML标记库 - 检查框单选框(2007-03-13 10:30:00)
摘要:这些标签必须嵌套在html:form中使用
html:checkbox
checkbox的值由value属性指定。
当提交表单时复选框被选中,则传递此参数,若没有被选中则不传递此参数。
eg: <html:checkbox property="mathScore" value="98"> 参数即为:mathScore=98
由此产生一个问题就是如果提交表单时checkbox未被选中则Form Bean里与此复选框对应的字段的值将仍然保存着。解决办法是在Form Bean里的reset()方法里对checkbox字段进行重置。即在reset()方法里设置当checkbox未被选中时表示的值。
eg:
jsp里:
<html:checkbox property="toUpperCase" value="true">转换成大写
Form Bean里:
reset(…){
toUpperCase=false//初始状态为:不选中
}
若FormBean里的值与checkbox标签的value值相等则选中,否则当FromBean里的对应值为true或yes或on时,复选框被选中否则不选中,这同时产生一个问题:
如上例做如下改动:
jsp里:
<html:checkbox property="toUpperCase" value="false">不转换成大写
Form Bean里:
reset(…){
toUpperCase=true//初始状态为:选中
}
初始状态下toUpperCase=true时,因为value跟FormBean里的toUpperCase值不等,则考虑FormBean的值,因为为true,所以复选框是处于被选中状态。
当保持选中状态时提交表单,则FormBean里的toUpperCase=false,因为value跟toUpperCase值相等,则复选框再次被选中。
也就是说不管FormBean里的toUpperCase的值是什么,JSP页面上的checkbox始终处于被选中状态。
处理办法是checkbox的值只能设置为true或yes或on。
chec......
基本表单标签(2007-03-13 10:23:00)
摘要:html:form
form标记用于生成HTML 的 <form>标记,该标记与Action对象及struts-config.xml文件中对应的FormBean相连
method属性默认为post
html:text
html:cancel
cancel标记与submit标记都实现表单提交功能,不同点在于他添加了一个传递参数org.apache.struts.taglib.html.CANCEL=”Cancel”。
html:reset
html:submit
html:hidden
只能在html:form标记中嵌套使用......
HTML标记库 - HTML基本元素标签(2007-03-13 10:22:00)
摘要:html:html
server
<html:html lang=”true”>
client
<html lang="zh-CN">
html:base
server:
<html:base />
<%=request.getServerName()%>
client:
<base href="http://localhost/123/taglib/html/test1.jsp">
localhost
html:link
html:link page使用相对与此应用程序的路径,而不是相对于服务器的相对路径,且与是否使用html:base无关
添加参数有三种方法
1. 直接添加
2. 使用paramId和paramName属性,如果是使用Bean则需同时使用paramName和paramProperty指定参数。
3. 定义一个Map,将此Map赋值给name属性作为变量参数
html:rewrite
用法和html:link一样,只是他直接跳转,而html:link给你一个链接,点击链接后才跳转
html:img
如果使用page属性指定图片位置,则此位置是相对于应用程序的位置,如果使用src则是相对于服务器的位置。
height和width属性可以对图片进行缩放。
可以传参,方法跟html:link相同。
使用示例
test1.jsp:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apac......