营销帖子_如何创建可复用的组件
- 格式:doc
- 大小:77.50 KB
- 文档页数:6
在应用开发过程中,有一些接口会被比较频繁的调用,比如获取店铺内的宝贝分类接口,而自定义类目一般都是在页面上以select或者checkbox的形式展现。这样以来,我们完全可以把其封装为一个组件(标签),以实现复用。
下面就以创建一个自定义类目标签为例,简单的介绍下如何在struts2下创建可复用的标签。
说明:
本例子用到的接口:taobao.sellercats.list.get;
本例子中设计到的文件有4个:
SellerCatsTag类文件
SellerCats类文件
yitaosoft_tags.tld标签配置文件
index.jsp标签展示页面
本标签实现的是把某店铺内的分类以checkbox的形式做一个展现,标签有两个参数,分别为checkbox的name属性以及用来配置样式的styleClass属性
本例子中的代码仅为示例代码,虽可以直接运行,但没有考虑到异常处理、可配置性等方面,仅作为参考使用;
第1步:创建相应的TagSupport类
package com.yitaosoft.test.tag;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ponent;
import ponentTagSupport;
import com.opensymphony.xwork2.util.ValueStack;
public class SellerCatsTag extends ComponentTagSupport {
private String name;
private String styleClass;
@Override
public Component getBean(ValueStack stack,
HttpServletRequest req,
HttpServletResponse res) {
SellerCats sellerCats = new SellerCats(stack);
sellerCats.setNick(this.getTopNick(req));
return sellerCats;
}
public void setName(String name) {
= name;
}
public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
}
protected void populateParams() {
super.populateParams();
SellerCats sellerCats = (SellerCats) component;
sellerCats.setName(name);
sellerCats.setStyleClass(styleClass);
}
private String getTopNick(HttpServletRequest req) {
return "柠檬绿茶"; //这个地方做了简化,实际上可以通过入参req从session中获取当前登录的nick
}
}
第2步:创建Tag类
package com.yitaosoft.test.tag;
import java.io.IOException;
import java.io.Writer;
import java.util.List;
import ponent;
import com.opensymphony.xwork2.util.ValueStack;
import com.taobao.api.ApiException; import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.domain.SellerCat;
import com.taobao.api.request.SellercatsListGetRequest;
import com.taobao.api.response.SellercatsListGetResponse;
import com.yitaosoft.test.utils.TopConstants;
public class SellerCats extends Component {
private String name;
private String nick;
private String styleClass;
public SellerCats(ValueStack stack) {
super(stack);
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public String getStyleClass() {
return styleClass;
}
public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
}
public boolean start(Writer writer) { boolean result = super.start(writer);
List sellerCats = null;
StringBuilder sellerCatsCheckbox = new
StringBuilder();
try {
sellerCats = querySellerCats();
for (SellerCat sellerCat : sellerCats) {
sellerCatsCheckbox.append("
type=checkbox name='");
sellerCatsCheckbox.append(getName() + "'");
sellerCatsCheckbox.append("class = '" +
styleClass + "'");
sellerCatsCheckbox.append("value = '" +
sellerCat.getCid()
+ "'>");
sellerCatsCheckbox.append(sellerCat.getName());
sellerCatsCheckbox.append("");
}
} catch (ApiException e) {
sellerCatsCheckbox.append("出现错误");
}
try {
writer.write(sellerCatsCheckbox.toString());
} catch (IOException ex) {
}
return result;
}
private List querySellerCats() throws
ApiException {
TaobaoClient taobaoClient = new DefaultTaobaoClient(
TopConstants.API_SERVICE_URL,
TopConstants.APP_KEY,
TopConstants.APP_SECRET); //TopConstants 中有一些常用的常量
SellercatsListGetRequest request = new
SellercatsListGetRequest();
request.setNick(nick);
SellercatsListGetResponse response = taobaoClient
.execute(request, nick); return response.getSellerCats();
}
}
第3步:在WEB-INF目录下创建yitaosoft_tags.tld,内容如下,
Tag Library 1.2//EN"
"/dtd/web-jsptaglibrary_1_2.dtd">
2.2.3
1.2
yitaosoft_tags
/yitaosoft_tags
"yitaosoft Tags"
sellerCats
com.yitaosoft.test.tag.SellerCatsTag
empty
name
true
true
styleClass
true
true
第4步:创建jsp页面,代码如下:
<%@ page language="java" contentType="text/html;
charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="yitaosoft_tags" uri="/yitaosoft_tags"%>