關於struts2的各種標籤的使用,網上資料還是很多的,但是唯獨這個number標籤,資料很少。不知道是不是因爲太簡單,沒人樂意寫。我覺得這個東西還是很有用的,寫幾句。
標籤定義文件:struts-tags.tld在struts2-core-x.x.x.jar 這個包下面,摘抄以下定義出來:
<tag>
<description><![CDATA[Render a formatted number.]]></description>
<name>number</name>
<tag-class>org.apache.struts2.views.jsp.NumberTag</tag-class>
<body-content>empty</body-content>
<attribute>
<description><![CDATA[The currency to use for a currency format]]></description>
<name>currency</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[Whether grouping is used]]></description>
<name>groupingUsed</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[Deprecated. Use 'var' instead]]></description>
<name>id</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[Maximum fraction digits]]></description>
<name>maximumFractionDigits</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[Maximum integer digits]]></description>
<name>maximumIntegerDigits</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[Minimum fraction digits]]></description>
<name>minimumFractionDigits</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[Maximum integer digits]]></description>
<name>minimumIntegerDigits</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[The number value to format]]></description>
<name>name</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[Parse integer only]]></description>
<name>parseIntegerOnly</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[The rounding mode to use - not implemented yet as this required Java 1.6]]></description>
<name>roundingMode</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[Type of number formatter (currency, integer, number or percent, default is number)]]></description>
<name>type</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description><![CDATA[Name used to reference the value pushed into the Value Stack]]></description>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<dynamic-attributes>false</dynamic-attributes>
</tag>
有興趣就挖掘以下org.apache.struts2.views.jsp.NumberTag類的源碼咯。
寫個例子,一看就清楚了:
Action類:
package test.action;
import java.util.ArrayList;
import java.util.List;
import test.model.User;
import com.opensymphony.xwork2.ActionSupport;
public class TestAction extends ActionSupport {
private static final long serialVersionUID = 2752911709036089235L;
private int num;
private List<User> userList;
public String testNumber(){
num = 56466126;
userList = new ArrayList<User>();
userList.add(new User("Mike",4546645));
userList.add(new User("Sam",2389469));
userList.add(new User("Keven",8923741));
return SUCCESS;
}
//getter and setter
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
User.java
package test.model;
public class User {
private String name;
private int salary;
public User(){}
public User(String name,int salary){
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}
JSP: number.jsp
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:property value="num"/><br>
<s:number name="num" groupingUsed="true" type="currency" maximumFractionDigits="0" /><br>
<s:number name="num" groupingUsed="true" type="integer" maximumFractionDigits="0" /><br>
<s:number name="num" groupingUsed="true" type="integer" maximumFractionDigits="2" minimumFractionDigits="2"/>
<br>
<br>
<s:iterator value="userList" >
<s:property value="name"/> <s:number name="salary" groupingUsed="true" type="integer" maximumFractionDigits="0" /><br>
</s:iterator>
<br>
<br>
<s:iterator value="userList" >
<s:property value="name"/> <s:number name="salary" groupingUsed="true" type="currency" maximumFractionDigits="2" minimumFractionDigits="2"/><br>
</s:iterator>
struts.xml
<action name="number" class="test.action.TestAction" method="testNumber" >
<result name="success" >/number.jsp</result>
</action>
該標籤的其他屬性:
沒啥好說的,就這樣。