营销帖子_如何创建可复用的组件

  • 格式: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"%>