html:multibox
html:multibox標簽生成多個checkbox。當您要使用大量的checkbox時使用這個標簽非常方便,可以使您避免在ActionForm中聲明大量的boolean類型的變量,帶之以一個數組就行了。
注意:為了正確的處理沒有選中的checkbox您必須在reset()中設置數組的長度為0。
下面的代碼示例了html:multibox標簽的一般用法,如果被提交則選中的所有checkbox的value值將被提交到multiboxForm中的selectedItems中,這是一個String[]數組。
下面的代碼示例了html:multibox標簽的典型用法:
html:link
html:link標簽生成一個錨點()元素。我從html:link標簽如何構造基本url和如何構造query參數兩個方面來介紹這個標簽。
構造基本url是依據該標簽的如下四個屬性進行的,這四個屬性一次只能出現一個。讓我們看看它們:?forward,指定一個全局ActionForward的名稱。另外如果forward是module相關的則該forward必須指向一個action而不能是一個頁面。?action,指定一個Action的名稱。?href,struts會直接使用這個值而不會對其進行任何處理。?page,指定一個頁面的路徑,必須以/開始。?構造query參數,下面列舉了可能的形式,其中baseurl只是一個占位符:?baseurl?p=00001(單參單值)?baseurl?p1=00001&p2=00002&p3=00003(多參單值)?baseurl?p=00001&p=00002&p=00003(單參多值)?baseurl?p1=00001&p2=00002&p=00001&p=00002&p=00003(混合)?下面我們以代碼示例來說明每一種html:link的用法,首先讓我們花點時間看看相關action中的代碼:
public?ActionForward?execute(ActionMapping?mapping,ActionForm?form,
HttpServletRequest?request,HttpServletResponse?response)?{
DataForm?dataForm?=?(DataForm)?form;
dataForm.setParam("00001");
HashMap?paramSingleMap?=?new?HashMap();
paramSingleMap.put("p1","00001");
paramSingleMap.put("p2","00002");
paramSingleMap.put("p3","00003");
dataForm.setParamSingleMap(paramSingleMap);
HashMap?paramMultiMap?=?new?HashMap();
paramMultiMap.put("p",new?String[]{"00001","00002","00003"});
dataForm.setParamMultiMap(paramMultiMap);
HashMap?paramSMMap?=?new?HashMap();
paramSMMap.put("p1","00001");
paramSMMap.put("p2","00002");
paramSMMap.put("p",new?String[]{"00001","00002","00003"});
dataForm.setParamSMMap(paramSMMap);
List?persons?=?new?ArrayList();
Person?person1?=?new?Person();
person1.setId("00001");
person1.setName("趙辰");
Person?person2?=?new?Person();
person2.setId("00002");
person2.setName("李為芳");
Person?person3?=?new?Person();
person3.setId("00003");
person3.setName("王微");
persons.add(person1);
persons.add(person2);
persons.add(person3);
dataForm.setPersons(persons);
return?mapping.findForward("success");
}
單參單值
多參單值
單參多值
混合
下面的代碼示例了html:link標簽的indexed屬性和indexId屬性的用法,這兩個屬性只有html:link標簽嵌套在logic:iterate標簽中時才可用。
person
html:rewrite標簽和html:link標簽類似只是不生成錨點(),而是簡單的輸出字符串。
html:errors
html:errors標簽和html:messages標簽的功能相似,所以我們放到一起來介紹。
html:errors標簽將由name屬性指定的ActionMessages、ActionErrors、String和String[]直接輸出到頁面中。
html:messages標簽將用由name屬性(注意message屬性值對它的影響)指定的ActionMessages、ActionErrors、String和String[]創建一個新的屬性和scripting變量,使用id屬性值作為名稱。
html:errors標簽和html:messages標簽的property屬性是用來為errors和messages分類的。我們可以給這兩個標簽指定property屬性,以便只顯示某一類的錯誤或消息。
在資源文件增加了如下的內容:
#?--?standard?errors?--
errors.header=
errors.prefix=
errors.suffix=
errors.footer=
error=error?with?none?value?.
error1=error1?with?one?value?is?{0}?.
error2=error2?with?two?values?are?{0}?,?{1}?.
error3=error3?with?three?values?are?{0}?,?{1}?,?{2}?.
error4=error4?with?four?values?are?{0}?,?{1}?,?{2}?,{3}?.
下面的代碼示例了actionErrors的構造:
public?ActionErrors?validate(ActionMapping?mapping,?HttpServletRequest?request)?{
ActionErrors?actionErrors?=?new?ActionErrors();
actionErrors.add("property1",
new?ActionMessage("error"));
actionErrors.add("property2",
new?ActionMessage("error1","value0"));
actionErrors.add("property2",
new?ActionMessage("error2","value0","value1"));
actionErrors.add("property3",
new?ActionMessage("error3","value0","value1","value2"));
actionErrors.add("property3",
new?ActionMessage("error4","value0","value1","value2","value3"));
actionErrors.add("property4",
new?ActionMessage("error1",new?Object[]{"value0"}));
actionErrors.add("property4",
new?ActionMessage("error2",new?Object[]{"value0","value1"}));
actionErrors.add("property4",
new?ActionMessage("error3",new?Object[]{"value0","value1",
"value2"}));
actionErrors.add("property5",
new?ActionMessage("error4",new?Object[]{"value0","value1",
"value2","value3"}));
actionErrors.add("notBundle",
new?ActionMessage("not?a?bundle?key",false));
return?actionErrors;
}
errors標簽代碼示例:
messages標簽代碼示例:
html:javascript
html:javascript標簽生成用于校驗的javascript腳本代碼。
下面的代碼片段示例了html:javascript標簽的基本用法,其中formName屬性的值是在validation.xml文件的中定義的form的名稱。有一點值得注意的是在確定時要使用合適的language屬性值。
html:xhtml
html:xhtml標簽在頁面中一出現就是告訴該頁的所有其它的Struts?html標簽以XHTML1.0兼容的形式輸出。這和將html:html標簽的xhtml屬性值指定為true有些類似。如果上述情況都沒有出現,Struts?html標簽將以html4.01兼容的形式輸出。