在HTTP請求中的一切都被視為一個(gè)String由協(xié)議。這包括數(shù)字,布爾值,整數(shù),日期,小數(shù)和一切。每一件事情是一個(gè)字符串,將根據(jù)HTTP。然而,Struts類可以有任何數(shù)據(jù)類型的屬性。Struts的自動(dòng)裝配屬性?
Struts使用了多種類型轉(zhuǎn)換器在幕后做繁重。例如,如果Action類的屬性有一個(gè)整數(shù),Struts的自動(dòng)轉(zhuǎn)換請求參數(shù)的整數(shù)屬性沒有做任何事情。默認(rèn)情況下,Struts的一些類型轉(zhuǎn)換器。下面列出了他們中的一些,如果您正在使用其中任何一個(gè),那么你有什么可擔(dān)心的:
Integer, Float, Double, Decimal
Date and Datetime
Arrays and Collections
Enumerations
Boolean
BigDecimal
有些時(shí)候,當(dāng)使用自己的數(shù)據(jù)類型,它是需要添加自己的轉(zhuǎn)換,使Struts知道如何將這些值,然后顯示??紤]以下POJO類Environment.java。
package com.yiibai.struts2; public class Environment { private String name; public Environment(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
這是一個(gè)非常簡單的類,它有一個(gè)名為name的屬性,所以沒有什么特別的關(guān)于這個(gè)類。我們創(chuàng)建包含有關(guān)系統(tǒng) - SystemDetails.java信息另一個(gè)類。目的是練習(xí),我有硬編碼環(huán)境,以“開發(fā)”在操作系統(tǒng)“Windows XP SP3”。在實(shí)際項(xiàng)目中,會(huì)從系統(tǒng)配置得到信息。因此,讓我們有以下動(dòng)作類:
package com.yiibai.struts2; import com.opensymphony.xwork2.ActionSupport; public class SystemDetails extends ActionSupport { private Environment environment = new Environment("Development"); private String operatingSystem = "Windows XP SP3"; public String execute() { return SUCCESS; } public Environment getEnvironment() { return environment; } public void setEnvironment(Environment environment) { this.environment = environment; } public String getOperatingSystem() { return operatingSystem; } public void setOperatingSystem(String operatingSystem) { this.operatingSystem = operatingSystem; } }
接下來讓我們創(chuàng)建一個(gè)簡單的JSP文件System.jsp顯示環(huán)境和操作系統(tǒng)信息。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>System Details</title> </head> <body> Environment: <s:property value="environment"/><br/> Operating System:<s:property value="operatingSystem"/> </body> </html>
讓我們編寫 system.jsp,SystemDetails.java類在struts.xml一起使用。 SystemDetails類有一個(gè)簡單的execute()方法返回字符串“SUCCESS”。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="system" class="com.yiibai.struts2.SystemDetails" method="execute"> <result name="success">/System.jsp</result> </action> </package> </struts>
右鍵點(diǎn)擊項(xiàng)目名稱,并單擊 Export > WAR File 創(chuàng)建一個(gè)WAR文件。然后部署此WAR在Tomcat的webapps目錄下。最后,啟動(dòng)Tomcat服務(wù)器和嘗試訪問URL http://localhost:8080/HelloWorldStruts2/system.action。這會(huì)給出以下畫面:
上面的輸出有什么錯(cuò)? Struts 知道如何顯示字符串“Windows XP SP3”等內(nèi)置數(shù)據(jù)類型轉(zhuǎn)換,但它不知道用Environmenttype屬性做什么。所以,它只是被稱為類的toString()方法。為了解決這個(gè)問題,現(xiàn)在讓我們創(chuàng)建并注冊一個(gè)簡單的TypeConverter環(huán)境類。創(chuàng)建一個(gè)類名為EnvironmentConverter.java以下。
package com.yiibai.struts2; import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; public class EnvironmentConverter extends StrutsTypeConverter { @Override public Object convertFromString(上一篇:Struts2 控件標(biāo)簽下一篇:Struts2 <s:sort>標(biāo)簽示例