表單標(biāo)簽列表是Struts UI標(biāo)簽的子集。這些標(biāo)簽有助于渲染Struts Web應(yīng)用程序所需的用戶界面,主要分為三類,本章將介紹這三種類型的UI標(biāo)簽:
我們其實(shí)已經(jīng)在前面的示例中使用了這些標(biāo)簽,接下來(lái)將在本章中重新回顧一下。以下是一個(gè)簡(jiǎn)單的視圖頁(yè)面email.jsp與幾個(gè)簡(jiǎn)單的UI標(biāo)簽:
<%@ 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> <s:head/> <title>Hello World</title> </head> <body> <s:div>Email Form</s:div> <s:text name="Please fill in the form below:" /> <s:form action="hello" method="post" enctype="multipart/form-data"> <s:hidden name="secret" value="abracadabra"/> <s:textfield key="email.from" name="from" /> <s:password key="email.password" name="password" /> <s:textfield key="email.to" name="to" /> <s:textfield key="email.subject" name="subject" /> <s:textarea key="email.body" name="email.body" /> <s:label for="attachment" value="Attachment"/> <s:file name="attachment" accept="text/html,text/plain" /> <s:token /> <s:submit key="submit" /> </s:form> </body> </html>
如果你了解HTML,那么就知道所有使用的標(biāo)簽都是非常常見(jiàn)的HTML標(biāo)簽,每個(gè)標(biāo)簽帶有一個(gè)額外的前綴“s:”以及不同的屬性。當(dāng)我們執(zhí)行上面的程序時(shí),將得出以下用戶界面,只要你已經(jīng)為所有的key設(shè)置了正確的映射。
群組UI標(biāo)簽用于創(chuàng)建單選按鈕和復(fù)選框。讓我們看一個(gè)簡(jiǎn)單的帶有復(fù)選框和單選按鈕標(biāo)簽的視圖頁(yè)面HelloWorld.jsp:
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>Hello World</title> <s:head /> </head> <body> <s:form action="hello.action"> <s:radio label="Gender" name="gender" list="{'male','female'}" /> <s:checkboxlist label="Hobbies" name="hobbies" list="{'sports','tv','shopping'}" /> </s:form> </body> </html>
當(dāng)我們執(zhí)行上面的程序時(shí),我們的輸出將類似于以下內(nèi)容:
讓我們來(lái)探討Struts提供的Select標(biāo)簽的不同變化。讓我們看一個(gè)簡(jiǎn)單的帶select標(biāo)簽的視圖頁(yè)面HelloWorld.jsp:
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>Hello World</title> <s:head /> </head> <body> <s:form action="login.action"> <s:select name="username" label="Username" list="{'Mike','John','Smith'}" /> <s:select label="Company Office" name="mySelection" value="%{'America'}" list="%{#{'America':'America'}}"> <s:optgroup label="Asia" list="%{#{'India':'India','China':'China'}}" /> <s:optgroup label="Europe" list="%{#{'UK':'UK','Sweden':'Sweden','Italy':'Italy'}}" /> </s:select> <s:combobox label="My Sign" name="mySign" list="#{'aries':'aries','capricorn':'capricorn'}" headerKey="-1" headerValue="--- Please Select ---" emptyOption="true" value="capricorn" /> <s:doubleselect label="Occupation" name="occupation" list="{'Technical','Other'}" doubleName="occupations2" doubleList="top == 'Technical' ? {'I.T', 'Hardware'} : {'Accounting', 'H.R'}" /> </s:form> </body> </html>
當(dāng)我們執(zhí)行上面的程序時(shí),輸出的結(jié)果將類似于以下內(nèi)容:
更多建議: