Struts2如何自定义标签St
自定义标签编写分为以下几步:
1。编写UIBean:
Java代码
@StrutsTag(description = "my email", name = "email", tldTagClass = "org。 oa。web。tags。MyMailTag")
public class MyMail extends UIBean {
public static final String TEMPLATE_NAME = "mymail";
private String address;
public MyMail(ValueStack stack, HttpServletRequest r...全部
自定义标签编写分为以下几步:
1。编写UIBean:
Java代码
@StrutsTag(description = "my email", name = "email", tldTagClass = "org。
oa。web。tags。MyMailTag")
public class MyMail extends UIBean {
public static final String TEMPLATE_NAME = "mymail";
private String address;
public MyMail(ValueStack stack, HttpServletRequest request,
HttpServletResponse response) {
super(stack, request, response);
}
@StrutsTagAttribute(description = "set e-mail address ", type = "String")
public void setAddress(String address) {
dress = address;
}
@Override
protected String getDefaultTemplate() {
return TEMPLATE_NAME;
}
@Override
protected void evaluateExtraParams() {
super。
evaluateExtraParams();
if (address != null) {
addParameter("address", findString(address));
}
}
}
@StrutsTag(description = "my email", name = "email", tldTagClass = "org。
oa。web。tags。MyMailTag")
public class MyMail extends UIBean {
public static final String TEMPLATE_NAME = "mymail";
private String address;
public MyMail(ValueStack stack, HttpServletRequest request,
HttpServletResponse response) {
super(stack, request, response);
}
@StrutsTagAttribute(description = "set e-mail address ", type = "String")
public void setAddress(String address) {
dress = address;
}
@Override
protected String getDefaultTemplate() {
return TEMPLATE_NAME;
}
@Override
protected void evaluateExtraParams() {
super。
evaluateExtraParams();
if (address != null) {
addParameter("address", findString(address));
}
}
}
2。
编写tag类:
AbstractUITag这个类要用到JSP-API,我大部分的时间都是浪费在这里,
这地方主要问题在于分清开发环境与运行环境。
我的包都是放在WEB-INF/lib下地。
所以这里是运行环境,同时也是开发环境。
这里不要放入 mcat下面lib文件夹中有。这样jsp-api。jar只需要在开发时
引用这个包,而不要把jsp-api。jar放入WEB-INF/lib下。
Java代码
public class MyMailTag extends AbstractUITag {
private static final long serialVersionUID = 1L;
private String address;
@Override
public Component getBean(ValueStack stack, HttpServletRequest req,
HttpServletResponse res) {
return new MyMail(stack, req, res);
}
@Override
protected void populateParams() {
super。
populateParams();
MyMail mail = (MyMail) component;
tAddress(address);
}
public void setAddress(String address) {
dress = address;
}
}
public class MyMailTag extends AbstractUITag {
private static final long serialVersionUID = 1L;
private String address;
@Override
public Component getBean(ValueStack stack, HttpServletRequest req,
HttpServletResponse res) {
return new MyMail(stack, req, res);
}
@Override
protected void populateParams() {
super。
populateParams();
MyMail mail = (MyMail) component;
tAddress(address);
}
public void setAddress(String address) {
dress = address;
}
}
d文件(只是重要部分。
)
这个文件我是放在这个目录中的 WEB-INF/tld/ d
Xml代码
1。10
u
/user-tags
email
org。oa。web。tags。
MyMailTag
JSP
address
true
1。10
u
/user-tags
email
org。
oa。web。tags。MyMailTag
JSP
address
true
4。
建立mymail。ftl文件。
文件放置在下面这个目录中
webroot/template/xhtml
webroot是我项目的根目录,
template不变,
xhtml是当前你使的哪种theme,如果是simple你就建simple文件夹。
跟据自身情况定。
My E-mail:${ dress?html}
5配置web。xml文件
Xml代码
/WEB-INF/tld/ d
/user-tags
/WEB-INF/tld/ d
/user-tags
tion类
Java代码
public class MyEmailAction {
private String address;
@Override
public String execute() throws Exception {
setAddress("XXXXXXXXX@ ");
return super。
execute();
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
dress = address;
}
}
public class MyEmailAction {
private String address;
@Override
public String execute() throws Exception {
setAddress("XXXXXXXXX@ ");
return super。
execute();
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
dress = address;
}
}
7。
建立jsp文件
Jsp代码
Insert title here
struts-tags:
user-tags:
Insert title here
struts-tags:
user-tags:
struts2。
xml就不写了。 。收起