当前位置: 首页 > 图文教程 > Java技术 > Web框架 > struts2(二)
在上一篇文章《Struts 2(一)》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。
| Struts 1.x | Struts 2.0 | |
| 分类 | 将标志库按功能分成HTML、Tiles、Logic和Bean等几部分 | 严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志 |
| 表达式语言(expression languages) | 不支持嵌入语言(EL) | OGNL、JSTL、Groovy和Velcity |
| 要在JSP中使用Struts 2.0标志,先要指明标志的引入。通过在JSP的代码的顶部加入以下代码可以做到这点。 <%@taglib prefix="s" uri="/struts-tags" %> |
| 名称 | 必需 | 默认 | 类型 | 描述 | 备注 |
| test | 是 | Boolean | 决定标志里内容是否显示的表达式 | else标志没有这个参数 | |
| id | 否 | Object/String | 用来标识元素的id。在UI和表单中为HTML的id属性 |
| 名称 | 必需 | 默认 | 类型 | 描述 |
| status | 否 | String | 如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈 | |
| value | 否 | Object/String | 要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象 | |
| id | 否 | Object/String | 用来标识元素的id。在UI和表单中为HTML的id属性 |
| 名称 | 必需 | 默认 | 类型 | 描述 |
| value | 是 | Object/String | 资源包的类路径(如com.xxxx.resources.AppMsg) | |
| id | 否 | Object/String | 用来标识元素的id。在UI和表单中为HTML的id属性 |
| 名称 | 必需 | 默认 | 类型 | 描述 |
| value | 是 | String | 要包含的jsp或servlet | |
| id | 否 | Object/String | 用来标识元素的id。在UI和表单中为HTML的id属性 |
![]() | value的提供有两种方式,通过value属性或者标签中间的text,不同之处我们看一下例子: <param name="color">blue</param><!-- (A) --> <param name="color" value="blue"/><!-- (B) --> (A)参数值会以String的格式放入statck. (B)该值会以java.lang.Object的格式放入statck. |
| 名称 | 必需 | 默认 | 类型 | 描述 |
| name | 否 | String | 参数名 | |
| value | 否 | String | value表达式 | |
| id | 否 | Object/String | 用来标识元素的id。在UI和表单中为HTML的id属性 |
| 名称 | 必需 | 默认 | 类型 | 描述 |
| name | 是 | String | 变量名字 | |
| scope | 否 | String | 变量作用域,可以为application, session, request, page, 或action. | |
| value | 否 | Object/String | 将会赋给变量的值 | |
| id | 否 | Object/String | 用来标识元素的id。在UI和表单中为HTML的id属性 |
| 名称 | 必需 | 默认 | 类型 | 描述 |
| name | 是 | String | 资源属性的名字 | |
| id | 否 | Object/String | 用来标识元素的id。在UI和表单中为HTML的id属性 |
![]() | 当includeParams的值时'all'或者'get', param标签中定义的参数将有优先权,也就是说其会覆盖其他同名参数的值。 |
| 名称 | 必需 | 默认 | 类型 | 描述 |
| default | 否 | String | 如果属性是null则显示的default值 | |
| escape | 否 | true | Booelean | 是否escape HTML |
| value | 否 | 栈顶 | Object | 要显示的值 |
| id | 否 | Object/String | 用来标识元素的id。在UI和表单中为HTML的id属性 |
![]() | 需要深入了解这些标志的朋友,可以到以下查看以下网址: [url]http://wiki.javascud.org/display/ww2cndoc/Tags[/url] WebWork2文档中文化计划(中文) [url]http://cwiki.apache.org/WW/tag-reference.html[/url] Tag Developers Guide(英文) 本文有相当的内容也来自这两处。 |
/*
* $Id: UITagExample.java 420385 2006-07-10 00:57:05Z mrdon $
*
* Copyright 2006 The Apache Software Foundation.
*
* 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
*
* [url]http://www.apache.org/licenses/LICENSE-2.0[/url]
*
* 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.
*/
package org.apache.struts2.showcase;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Validateable;
import com.opensymphony.xwork2.util.OgnlValueStack;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.File;
/**
*/
public class UITagExample extends ActionSupport implements Validateable {
private static final long serialVersionUID = -94044809860988047L;
String name;
Date birthday;
String bio;
String favoriteColor;
List friends;
boolean legalAge;
String state;
String region;
File picture;
String pictureContentType;
String pictureFileName;
String favouriteLanguage;
String favouriteVehicalType = "MotorcycleKey";
String favouriteVehicalSpecific = "YamahaKey";
List leftSideCartoonCharacters;
List rightSideCartoonCharacters;
List favouriteLanguages = new ArrayList();
List vehicalTypeList = new ArrayList();
Map vehicalSpecificMap = new HashMap();
String thoughts;
public UITagExample() {
favouriteLanguages.add(new Language("EnglishKey", "English Language"));
favouriteLanguages.add(new Language("FrenchKey", "French Language"));
favouriteLanguages.add(new Language("SpanishKey", "Spanish Language"));
VehicalType car = new VehicalType("CarKey", "Car");
VehicalType motorcycle = new VehicalType("MotorcycleKey", "Motorcycle");
vehicalTypeList.add(car);
vehicalTypeList.add(motorcycle);
List cars = new ArrayList();
cars.add(new VehicalSpecific("MercedesKey", "Mercedes"));
cars.add(new VehicalSpecific("HondaKey", "Honda"));
cars.add(new VehicalSpecific("FordKey", "Ford"));
List motorcycles = new ArrayList();
motorcycles.add(new VehicalSpecific("SuzukiKey", "Suzuki"));
motorcycles.add(new VehicalSpecific("YamahaKey", "Yamaha"));
vehicalSpecificMap.put(car, cars);
vehicalSpecificMap.put(motorcycle, motorcycles);
}
public List getLeftSideCartoonCharacters() {
return leftSideCartoonCharacters;
}
public void setLeftSideCartoonCharacters(List leftSideCartoonCharacters) {
this.leftSideCartoonCharacters = leftSideCartoonCharacters;
}
public List getRightSideCartoonCharacters() {
return rightSideCartoonCharacters;
}
public void setRightSideCartoonCharacters(List rightSideCartoonCharacters) {
this.rightSideCartoonCharacters = rightSideCartoonCharacters;
}
public String getFavouriteVehicalType() {
return favouriteVehicalType;
}
public void setFavouriteVehicalType(String favouriteVehicalType) {
this.favouriteVehicalType = favouriteVehicalType;
}
public String getFavouriteVehicalSpecific() {
return favouriteVehicalSpecific;
}
public void setFavouriteVehicalSpecific(String favouriteVehicalSpecific) {
this.favouriteVehicalSpecific = favouriteVehicalSpecific;
}
public List getVehicalTypeList() {
return vehicalTypeList;
}
public List getVehicalSpecificList() {
OgnlValueStack stack = ServletActionContext.getValueStack(ServletActionContext.getRequest());
Object vehicalType = stack.findValue("top");
if (vehicalType != null && vehicalType instanceof VehicalType) {
List l = (List) vehicalSpecificMap.get(vehicalType);
return l;
}
return Collections.EMPTY_LIST;
}
public List getFavouriteLanguages() {
return favouriteLanguages;
}
public String execute() throws Exception {
return SUCCESS;
}
/*
Getters and Setters
*/
public String doSubmit() {
return SUCCESS;
}
// === inner class
public static class Language {
String description;
String key;
public Language(String key, String description) {
this.key = key;
this.description = description;
}
public String getKey() {
return key;
}
public String getDescription() {
return description;
}
}
public static class VehicalType {
String key;
String description;
public VehicalType(String key, String description) {
this.key = key;
this.description = description;
}
public String getKey() { return this.key; }
public String getDescription() { return this.description; }
public boolean equals(Object obj) {
if (! (obj instanceof VehicalType)) {
return false;
}
else {
return key.equals(((VehicalType)obj).getKey());
}
}
public int hashCode() {
return key.hashCode();
}
}
public static class VehicalSpecific {
String key;
String description;
public VehicalSpecific(String key, String description) {
this.key = key;
this.description = description;
}
public String getKey() { return this.key; }
public String getDescription() { return this.description; }
public boolean equals(Object obj) {
if (! (obj instanceof VehicalSpecific)) {
return false;
}
else {
return key.equals(((VehicalSpecific)obj).getKey());
}
}
public int hashCode() {
return key.hashCode();
}
}
}
评论 (0) All