property 標(biāo)簽是用來獲取屬性的值,這將默認(rèn)堆棧的頂部,如果沒有指定。這個(gè)例子顯示了三個(gè)簡(jiǎn)單的數(shù)據(jù)標(biāo)記 - 即set, push 和 property 的用法。
對(duì)于這個(gè)練習(xí),讓我們重用的例子在“數(shù)據(jù)類型轉(zhuǎn)換”一章,但小的修改。因此,讓我們開始創(chuàng)建類??紤]以下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; } }
我們的動(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; } }
我們有System.jsp以下內(nèi)容:
<%@ 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> <p>The environment name property can be accessed in three ways:</p> (Method 1) Environment Name: <s:property value="environment.name"/><br/> (Method 2) Environment Name: <s:push value="environment"> <s:property value="name"/><br/> </s:push> (Method 3) Environment Name: <s:set name="myenv" value="environment.name"/> <s:property value="myenv"/> </body> </html>
現(xiàn)在,讓我們?nèi)ブ鹨煌ㄟ^三個(gè)選項(xiàng):
在第一個(gè)方法中,我們使用屬性標(biāo)記的環(huán)境的名稱來獲取值。由于環(huán)境變量是在動(dòng)作類,它可以自動(dòng)值棧中的。我們可以直接引用它使用屬性environment.name。當(dāng)一個(gè)類中的屬性數(shù)有限。試想一下,如果有20個(gè)環(huán)境類中的屬性。每次需要參考這些變量需要添加“environment.”作為前綴。push標(biāo)簽記處理。
在第二種方法中,我們把“environment”屬性的堆棧。因此,現(xiàn)在主體內(nèi)的 push 標(biāo)記,環(huán)境屬性是可堆棧的根。所以,現(xiàn)在引用屬性,很容易在這個(gè)例子所示。
在最后的方法,我們使用設(shè)置的標(biāo)簽來創(chuàng)建一個(gè)新的變量稱為myenv。此變量的值設(shè)置為environment.name。所以,現(xiàn)在我們可以使用這個(gè)變量的地方,我們是指環(huán)境的名稱。
<?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>
你的web.xml文件內(nèi)容應(yīng)該像這樣:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/200