Cookbook-struts1.3.8案例分析-Select and Options tags
Cookbook-struts1.3.8案例分析-Select and Options tags
l Select and Options tags
入口Action配置
<action path="/prepareOptions" type="examples.options.PrepareOptionsAction"> <forward name="success" path="/jsp/options/Options.jsp" /> </action> <action path="/processOptions" type="examples.options.ProcessOptionsAction" name="optionsForm" scope="request" input="/jsp/options/Options.jsp" validate="false"> <forward name="success" path="/jsp/options/OptionsResults.jsp" /> </action> |
SuccessAction,繼承自Action,execute方法如下
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { /* An array */ String[] fruits = { "Strawberry", "Apple", "Orange", "Pear", "Mango", "Banana", "Pineapple" }; request.setAttribute("fruits", fruits); /* Two arrays - one for labels and one for values */ String[] colors = { "Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet" }; request.setAttribute("colors", colors); String[] colorCodes = { "#FF0000", "#FFA500", "#FFFF00", "#00FF00", "#0000FF", "#4B0082", "#EE82EE" }; request.setAttribute("colorCodes", colorCodes); /* A Collection */ ArrayList colorList = new ArrayList(); colorList.add("Red"); colorList.add("Orange"); colorList.add("Yellow"); colorList.add("Green"); colorList.add("Blue"); colorList.add("Indigo"); colorList.add("Violet"); request.setAttribute("colorCollection", colorList); /* A Collection of LabelValue beans */ ArrayList days = new ArrayList(); days.add(new LabelValueBean("Monday", "1")); days.add(new LabelValueBean("Tuesday", "2")); days.add(new LabelValueBean("Wednesday", "3")); days.add(new LabelValueBean("Thursday", "4")); days.add(new LabelValueBean("Friday", "5")); days.add(new LabelValueBean("Saturday", "6")); days.add(new LabelValueBean("Sunday", "7")); request.setAttribute("days", days); /* Collection of custom beans */ ArrayList books = new ArrayList(); books.add(new BookBean("0596003285", "Programming Jakarta Struts")); books.add(new BookBean("1930110502", "Struts in Action")); books.add( new BookBean("1861007817", "Professional Struts Applications")); books.add(new BookBean("0672324725", "Struts Kick Start")); books.add(new BookBean("0471213020", "Mastering Jakarta Struts")); books.add(new BookBean("1558608621", "The Struts Framework")); books.add(new BookBean("0971661901", "Struts Fast Track")); request.setAttribute("books", books); /* A Map * * Note: We are using a HashMap which is unsorted - the resulting * options could appear in any order. If you want to your options to be * in a particular order you should you a SortedMap implementation such * as the TreeMap. This behaviour is a feature of the standard Map * implementaions and nothing to to with Struts tags. * * Also, we've used an Integer as the key to demonstrate that the * <html:options> and <html:optionsCollection> tags do not require * String values for the label and values. If they are passed an object * other than a String, they will automatically call the toString() * method and use the result. */ HashMap animals = new HashMap(); animals.put(new Integer(1), "Cat"); animals.put(new Integer(2), "Dog"); animals.put(new Integer(3), "Horse"); animals.put(new Integer(4), "Rabbit"); animals.put(new Integer(5), "Goldfish"); request.setAttribute("animals", animals); // Forward to form page return mapping.findForward("success"); } |
Form Jsp頁面里用到的標簽,定義了不同類型的select標簽用法
以下3個是最簡單的select標簽,類似html的select標簽 <html:select property="fruit1"> <html:option value="Strawberry">Strawberry</html:option> <html:option value="Apple">Apple</html:option> <html:option value="Orange">Orange</html:option> <html:option value="Pear">Pear</html:option> <html:option value="Mango">Mango</html:option> <html:option value="Banana">Banana</html:option> <html:option value="Pineapple">Pineapple</html:option> </html:select> 只顯示一項,并且單選 <html:select property="fruit2" size="4"> <html:option value="Strawberry">Strawberry</html:option> <html:option value="Apple">Apple</html:option> <html:option value="Orange">Orange</html:option> <html:option value="Pear">Pear</html:option> <html:option value="Mango">Mango</html:option> <html:option value="Banana">Banana</html:option> <html:option value="Pineapple">Pineapple</html:option> </html:select> 顯示4個,并且單選 <html:select property="fruit3" size="7" multiple="true"> <html:option value="Strawberry">Strawberry</html:option> <html:option value="Apple">Apple</html:option> <html:option value="Orange">Orange</html:option> <html:option value="Pear">Pear</html:option> <html:option value="Mango">Mango</html:option> <html:option value="Banana">Banana</html:option> <html:option value="Pineapple">Pineapple</html:option> </html:select> 顯示7個,可以shift多選 下面3個select標簽采用數組和集合的方式渲染 <html:select property="color1" size="7"> <html:options name="colors" /> </html:select> display和value用一個數組 <html:select property="color2" size="7"> <html:options name="colorCodes" labelName="colors" /> </html:select> display和value用不同的數組 html:select property="color3" size="7"> <html:options name="colorCodes" labelName="colorCollection" /> display和數組組合起來的集合 </html:select> 下面2個select標簽使用LabelValueBeans <html:select property="day1" size="7"> <html:optionscollection="days" property="value" labelProperty="label" /> </html:select> 使用html:options <html:select property="day2" size="7"> <html:optionsCollection name="days" /> </html:select> 使用html:optionsCollection 下面兩個select用Map來渲染 <html:select property="animal1" size="5"> <html:options collection="animals" property="key" labelProperty="value" /> </html:select> 使用html:options <html:select property="animal2" size="5"> <html:optionsCollection name="animals" value="key" label="value" /> </html:select> 使用html:optionsCollection |
ActionForm類的定義,用xml定義
<form-bean name="optionsForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="fruit1" type="java.lang.String" initial="Pear" /> <form-property name="fruit2" type="java.lang.String" initial="Apple" /> <form-property name="fruit3" type="java.lang.String[]" initial="Banana Orange" /> <form-property name="color1" type="java.lang.String" /> <form-property name="color2" type="java.lang.String" /> <form-property name="color3" type="java.lang.String" /> <form-property name="day1" type="java.lang.String" /> <form-property name="day2" type="java.lang.String" /> <form-property name="book1" type="java.lang.String" /> <form-property name="book2" type="java.lang.String" /> <form-property name="animal1" type="java.lang.String" /> <form-property name="animal2" type="java.lang.String" /> </form-bean> |
Result JSP里用到的標簽,打印結果
<bean:write name="optionsForm" property="fruit1" /> <logic:iterate name="optionsForm" property="fruit3" id="fruit"> <bean:write name="fruit" /> </logic:iterate> |
ProcessOptionsAction的處理非常簡單
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (isCancelled(request)) { return mapping.findForward("home"); } return mapping.findForward("success"); } |
posted on 2008-07-08 02:21 MingIsMe 閱讀(336) 評論(0) 編輯 收藏 所屬分類: 16 案例分析