读书人

struts2 自定义标签 范例

发布时间: 2013-02-24 17:58:56 作者: rapoo

struts2 自定义标签 实例
<jason:jtime who="hwj" message="你好"/>(2)
JtimeTag要定义tld文件中定义的各对应属性.public class JtimeTag extends ComponentTagSupport {
?private String message;
?private String who;?public String getMessage() {
??return message;
?}?public void setMessage(String message) {
??this.message = message;
?}?public String getWho() {
??return who;
?}?public void setWho(String who) {
??this.who = who;
?}
?public Component getBean(ValueStack arg0, HttpServletRequest arg1,
???HttpServletResponse arg2) {
??return new JtimeComponent(arg0);
?}?protected void populateParams() {
??super.populateParams();
??JtimeComponent jtime = (JtimeComponent) component;
??jtime.setWho(who);
??jtime.setMessage(message);
?}
}(3)
JtimeTag要定义tld文件中定义的各对应属性.因为JtimeTag要赋值给它.:)
public class JtimeComponent extends Component {
?
?private String message;?private String who;
?
?private String a;
??public String getMessage() {
??return message;
?}?public void setMessage(String message) {
??this.message = message;
?}?public String getWho() {
??return who;
?}?public void setWho(String who) {
??this.who = who;
?}?public JtimeComponent(ValueStack arg0) {
??super(arg0);
?}//将自己需要输出的逻辑通过writer输出字符串就可以了。
?public boolean start(Writer writer) {
??boolean result = super.start(writer);
??try {
???a=this.getStack().findString("pageSize");
????writer.write(toHTML(who,message));
??} catch (IOException ex) {
??}
??
??return result;
?}
?
?protected String toHTML(String who,String message) {
??Date date=new Date();
??return who+message+" 当前的时间是:"+date+"页面数:"+a;
?}
}(4)
<taglib>???
??? <tlib-version>2.2.3</tlib-version>???
??? <jsp-version>1.2</jsp-version>???
??? <short-name>my</short-name>???
??? <uri>/jtime</uri>? -无起作用????
??? <display-name>"jason time tab"</display-name>???
??????? <tag>???
??????????? <name>jtime</name>???
??????????? <tag-class>com.coship.dhm.dm.common.taglib.JtimeTag</tag-class>????
??????????? <body-content>empty</body-content>???????
??????????? <attribute>???
??????????????? <name>message</name>???
??????????????? <required>false</required>???
??????????????? <rtexprvalue>true</rtexprvalue>???
??????????? </attribute>?
??????????? <attribute>???
??????????????? <name>who</name>???
??????????????? <required>true</required>???
??????????????? <rtexprvalue>true</rtexprvalue>???
??????????? </attribute>
??????? </tag>???
</taglib>?(5)
执行过程:
1
页面打开时,load入<%@ taglib prefix="jason" uri="/WEB-INF/tlds/time.tld" %>;
当程序读到"<jason"时,会根据上面的标签定义到time.tld-->JtimeTag.java;
2.
JtimeTag继承ComponentTagSupport,会将JSP页面标签属性进行获取,因为此类有定义各属性及其getter,setter -->生成一个基本类实例,赋值-->将各属性值赋给基本类实例.
3.
基本类实例,执行start()方法-->执行super.start()-->获取action中的属性-->将自定义的信息用writer.write()输出.

读书人网 >互联网

热点推荐