添加Bean对象
package com.show.tag.input;
import org.apache.struts2.components.Component;
import com.opensymphony.xwork2.util.ValueStack;
/**
*
* @author liuqing
* 基础Tag类
*
*/
public class HtmlInput extends Component {
private String theme;
private String id;
private String width;
private String height;
private String name;
private String cssStyle;
private String value;
private boolean isNumber;
private int min;
private int max;
private int precision;
private int minLength;
private int maxLength;
private boolean isString;
private String onchange;
public HtmlInput(ValueStack stack) {
super(stack);
}
public HtmlInput(ValueStack stack, String width, String height,
String name, String cssStyle) {
super(stack);
this.width = width;
this.height = height;
this.name = name;
this.cssStyle = cssStyle;
}
public HtmlInput(ValueStack stack, String id, String width, String height,
String name, String cssStyle, String value) {
super(stack);
this.id = id;
this.width = width;
this.height = height;
this.name = name;
this.cssStyle = cssStyle;
this.value = value;
}
public HtmlInput(ValueStack stack, String theme, String id, String width,
String height, String name, String cssStyle, String value) {
super(stack);
this.theme = theme;
this.id = id;
this.width = width;
this.height = height;
this.name = name;
this.cssStyle = cssStyle;
this.value = value;
}
/**
* @return the width
*/
public String getWidth() {
return width;
}
/**
* @param width the width to set
*/
public void setWidth(String width) {
this.width = width;
}
/**
* @return the height
*/
public String getHeight() {
return height;
}
/**
* @param height the height to set
*/
public void setHeight(String height) {
this.height = height;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the cssStyle
*/
public String getCssStyle() {
return cssStyle;
}
/**
* @param cssStyle the cssStyle to set
*/
public void setCssStyle(String cssStyle) {
this.cssStyle = cssStyle;
}
/**
* @return the value
*/
public String getValue() {
return value;
}
/**
* @param value the value to set
*/
public void setValue(String value) {
this.value = value;
}
/**
* @return the id
*/
public String getId() {
if (this.id == null || "".equals(id)) {
this.id = this.name;
}
return id;
}
/**
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}
/**
* @return the theme
*/
public String getTheme() {
return theme;
}
/**
* @param theme the theme to set
*/
public void setTheme(String theme) {
this.theme = theme;
}
/**
* @return the isNumber
*/
public boolean isNumber() {
return isNumber;
}
/**
* @param isNumber the isNumber to set
*/
public void setNumber(boolean isNumber) {
this.isNumber = isNumber;
}
/**
* @return the min
*/
public int getMin() {
return min;
}
/**
* @param min the min to set
*/
public void setMin(int min) {
this.min = min;
}
/**
* @return the max
*/
public int getMax() {
return max;
}
/**
* @param max the max to set
*/
public void setMax(int max) {
this.max = max;
}
/**
* @return the precision
*/
public int getPrecision() {
return precision;
}
/**
* @param precision the precision to set
*/
public void setPrecision(int precision) {
this.precision = precision;
}
/**
* @return the minLength
*/
public int getMinLength() {
return minLength;
}
/**
* @param minLength the minLength to set
*/
public void setMinLength(int minLength) {
this.minLength = minLength;
}
/**
* @return the maxLength
*/
public int getMaxLength() {
return maxLength;
}
/**
* @param maxLength the maxLength to set
*/
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
/**
* @return the isString
*/
public boolean isString() {
return isString;
}
/**
* @param isString the isString to set
*/
public void setString(boolean isString) {
this.isString = isString;
}
/**
* @return the onchange
*/
public String getOnchange() {
return onchange;
}
/**
* @param onchange the onchange to set
*/
public void setOnchange(String onchange) {
this.onchange = onchange;
}
}
package com.show.tag.input;
import java.io.IOException;
import java.io.Writer;
import com.opensymphony.xwork2.util.ValueStack;
/**
*
* @author liuqing
* @version 1.0
* 2011-8-24
*
*/
public class DateBox extends HtmlInput {
private String theme;
private int inputNumber;
private String match;
private String split;
private String align;
public DateBox(ValueStack stack, String id,String width,String height,
String name,String cssStyle,String value,int inputNumber, String match,
String split, String align,String theme,boolean isNumber,int min
,int max,int precision,int minLength,int maxLength,boolean isString
,String onchange) {
super(stack,id,width,height,name,cssStyle,value);
this.inputNumber = inputNumber;
this.match = match;
this.split = split;
this.align = align;
this.theme = theme;
this.setNumber(isNumber);
this.setMin(min);
this.setMax(max);
this.setPrecision(precision);
this.setMinLength(minLength);
this.setMaxLength(maxLength);
this.setString(isString);
this.setOnchange(onchange);
}
public DateBox(ValueStack stack) {
super(stack);
}
/* (non-Javadoc)
* @see org.apache.struts2.components.Component#start(java.io.Writer)
*/
@Override
public boolean start(Writer writer) {
StringBuffer buf = new StringBuffer("<div style=\"margin:2px;text-align:" +
this.align +
";\"><input name=\"");
buf.append(this.getName())
.append("\" type=\"text\" class=\"easyui-datebox\" ")
.append("style=\"width:").append(width(this.getWidth())).append("px;")
.append(" height:").append(height(this.getHeight())).append("px;");
String stackValue = stack.findString(this.getName());
buf.append(this.getCssStyle()).append("\" ");
if (stackValue != null && !"".equals(stackValue)
//&& (this.getValue() == null || "".equals(this.getValue()))
) {
buf.append(" value=\"").append(stackValue).append(" \" />");
}
else {
buf.append(" value=\"").append(this.getValue()).append("\" />");
}
try {
writer.write(buf.toString());
writer.flush();
}
catch (IOException e) {
e.printStackTrace();
}
return super.start(writer);
}
/**
* @return the inputNumber
*/
public int getInputNumber() {
return inputNumber;
}
/**
* @param inputNumber the inputNumber to set
*/
public void setInputNumber(int inputNumber) {
this.inputNumber = inputNumber;
}
/**
* @return the match
*/
public String getMatch() {
return match;
}
/**
* @param match the match to set
*/
public void setMatch(String match) {
this.match = match;
}
/**
* @return the split
*/
public String getSplit() {
return split;
}
/**
* @param split the split to set
*/
public void setSplit(String split) {
this.split = split;
}
/**
* @return the align
*/
public String getAlign() {
return align;
}
/**
* @param align the align to set
*/
public void setAlign(String align) {
this.align = align;
}
/**
* @return the theme
*/
public String getTheme() {
return theme;
}
/**
* @param theme the theme to set
*/
public void setTheme(String theme) {
this.theme = theme;
}
private String width(String value) {
if (value == null || "".equals(value)
|| value.length() == 0) {
return "160";
}
return value;
}
private String height(String value) {
if (value == null || "".equals(value)
|| value.length() == 0) {
return "26";
}
return value;
}
}
step 2:添加Tag 类注意struts2 valueStack
package com.show.tag.input;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.components.Component;
import org.apache.struts2.views.jsp.ComponentTagSupport;
import com.opensymphony.xwork2.util.ValueStack;
/**
*
* @author liuqing
*
*/
public class DateBoxTag extends ComponentTagSupport {
private String width = "";
private String height = "";
private String name = "";
private String cssStyle = "";
private String value = "";
private boolean isNumber;
private int min;
private int max;
private int precision;
private int minLength;
private int maxLength;
private boolean isString;
private String align = "";
@Override
public Component getBean(ValueStack value, HttpServletRequest request,
HttpServletResponse response) {
DateBox box = new DateBox(value);
box.setWidth(width);
box.setHeight(height);
box.setName(name);
box.setCssStyle(cssStyle);
box.setValue(this.value);
box.setAlign(align);
return box;
}
/**
* @return the width
*/
public String getWidth() {
return width;
}
/**
* @param width the width to set
*/
public void setWidth(String width) {
this.width = width;
}
/**
* @return the height
*/
public String getHeight() {
return height;
}
/**
* @param height the height to set
*/
public void setHeight(String height) {
this.height = height;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the cssStyle
*/
public String getCssStyle() {
return cssStyle;
}
/**
* @param cssStyle the cssStyle to set
*/
public void setCssStyle(String cssStyle) {
this.cssStyle = cssStyle;
}
/**
* @return the value
*/
public String getValue() {
return value;
}
/**
* @param value the value to set
*/
public void setValue(String value) {
this.value = value;
}
/**
* @return the isNumber
*/
public boolean isNumber() {
return isNumber;
}
/**
* @param isNumber the isNumber to set
*/
public void setNumber(boolean isNumber) {
this.isNumber = isNumber;
}
/**
* @return the min
*/
public int getMin() {
return min;
}
/**
* @param min the min to set
*/
public void setMin(int min) {
this.min = min;
}
/**
* @return the max
*/
public int getMax() {
return max;
}
/**
* @param max the max to set
*/
public void setMax(int max) {
this.max = max;
}
/**
* @return the precision
*/
public int getPrecision() {
return precision;
}
/**
* @param precision the precision to set
*/
public void setPrecision(int precision) {
this.precision = precision;
}
/**
* @return the minLength
*/
public int getMinLength() {
return minLength;
}
/**
* @param minLength the minLength to set
*/
public void setMinLength(int minLength) {
this.minLength = minLength;
}
/**
* @return the maxLength
*/
public int getMaxLength() {
return maxLength;
}
/**
* @param maxLength the maxLength to set
*/
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
/**
* @return the isString
*/
public boolean isString() {
return isString;
}
/**
* @param isString the isString to set
*/
public void setString(boolean isString) {
this.isString = isString;
}
/**
* @return the align
*/
public String getAlign() {
return align;
}
/**
* @param align the align to set
*/
public void setAlign(String align) {
this.align = align;
}
}
step 3 写tld 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>2.2.3</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>tangs</short-name>
<uri>/struts-tags-zk</uri>
<display-name>"Tangs Tags"</display-name>
<tag>
<name>toolbar</name>
<tag-class>com.show.toolbar.OperationTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>addOnclick</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>addHref</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>saveOnclick</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>saveHref</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>removeOnclick</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>removeHref</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>printOnclick</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>printHref</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>searchOnclick</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>searchHref</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>backOnclick</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>backHref</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>inputUnderline</name>
<tag-class>com.show.tag.input.UnderLineTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>width</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>height</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>cssStyle</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>inputNoneLine</name>
<tag-class>com.show.tag.input.NoneLineTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>width</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>height</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>cssStyle</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>dateBox</name>
<tag-class>com.show.tag.input.DateBoxTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>width</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>height</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>cssStyle</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>align</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>datetimeBox</name>
<tag-class>com.show.tag.input.DatetimeBoxTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>width</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>height</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>cssStyle</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>align</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>inputList</name>
<tag-class>com.show.tag.input.ListInputTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>id</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>width</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>height</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>cssStyle</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>align</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>inputNumber</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>match</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>split</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>theme</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>useNumber</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>min</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>max</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>precision</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>minLength</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>maxLength</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>useString</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>onchange</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>textArea</name>
<tag-class>com.show.tag.input.TextAreaInputTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>id</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>width</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>height</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>cssStyle</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>align</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>match</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>split</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>theme</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>useNumber</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>min</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>max</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>precision</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>minLength</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>maxLength</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>useString</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>useBorder</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
<%@taglib prefix="sx" uri="/struts-tags-zk" %>
<sx:dateBox width="300" align="right" name="startDate" />
OK