Struts html 标签:checkbox multibox ridio select option options optionsCollection

    技术2022-05-11  71

    首先要知道这些标签的property属性都要有相应的formbean里的属性值与之相对应,不然就无法通过验证,因为Struts在初始化html标签时是要检查formbean内是否存在此属性值的!

        这些标签学习起来并不轻松,有好多种变化,要掌握全面,一定要有耐心!

        下面把用到jsp页面的代码和formbean代码和properties文件代码贴到下面!慢慢看看,别着急!

     

        Jsp页面源代码:

        

        <%@ page language="java" pageEncoding="UTF-8" import="com.html.struts.form.*,java.util.*"%>

        <!--引入form包中的javabean和接下来可能要建立集合用到的java.util.*中的所有类--><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %><%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

        <!--导入Struts的常用标签Struts1.2以后可以不在web.xml中声明,只要把uri路径写对就ok!--><html:html>  <head>    <title>html标签研究</title>  </head>  <body>  <html:form action="/login.do">  <table border="1" width="100%"> <tr>  <th align="left" width="20%">  <html:checkbox>  </th>  <th align="left" width="80%">  Struts code for example  </th> </tr> <tr>  <td align="left" width="20%">  Checkbox 1:  <html:checkbox property="checkbox1" value="true"></html:checkbox>  </td>  <td align="left" width="80%">  <html:checkbox property="checkbox1">  -Normal checkbox  </td> </tr> <tr>  <td align="left" width="20%">  Checkbox 2:  <html:checkbox property="checkbox2"></html:checkbox>

       <!--checkbox用来最单选有点绕,不建议这么用-->  </td>  <td align="left" width="80%">  <html:checkbox property="checkbox2">  -Normal checkbox  </td> </tr>  </table>  <table border="1" width="100%">   <tr>   <th align="left" width="20%">      <html:multibox>   </th>   <th align="left" width="80%">   Struts code fro example   </th>   </tr>   <tr>    <td align="left" width="20%">Multibox1:

    <html:multibox property="strArray" value="Value1"></html:multibox>

        </td>    <td align="left" width="80%">Multibox1:<html:multibox property="strArray" value="Value1"/>   </tr>      <tr>    <td align="left" width="20%">Multibox1:

    <html:multibox property="strArray" value="Value2"></html:multibox>

        <!--multibox为复选框注意上面两个的property后面都是strArray对应着frombean中的strArray这个数组变量提交以后将都被放入此数组中-->

        </td>    <td align="left" width="80%">Multibox1:<html:multibox property="strArray" value="Value2"/>   </tr>  </table>  <table>   <tr>    <th align="left" width="20%">   <html:Radiobox/>    </th>    <th align="left" width="80%">     Struts code for example    </th>   </tr>   <tr>    <td align="left" width="20%">     <html:radio property="radioVal" value="RadioValue1">Radio1</html:radio>    </td>    <td align="left" width="80%">     <html:radio property="radioVal" value="RadioValue1"/>    </td>   </tr>   <tr>    <td align="left" width="20%">     <html:radio property="radioVal" value="RadioValue1">Radio1</html:radio>

         <!--这个radio按钮,单选互斥按钮,当然property后边的名字一样才可以互斥,formbean中为这样的互斥按钮建立一个string变量即可-->    </td>    <td align="left" width="80%">     <html:radio property="radioVal" value="RadioValue1"/>    </td>   </tr>  </table>  <table>   <tr>    <%     Vector colorCollection = new Vector();     colorCollection.add(      new org.apache.struts.util.LabelValueBean("Pink","htmlselect.pink"));     colorCollection.add(      new org.apache.struts.util.LabelValueBean("Pink","htmlselect.pink"));     pageContext.setAttribute("colorCollection",colorCollection);     %>

        <!--这个在页面上建立的集合colorCollection 将对应下面的select的options标签中的collection属性,options将调能够调用pageContext范围内的集合变量而一次性输出集合中的值-->   </tr>   <th align="left" width="20%">Select a customer:</th>   <th align="left" width="20%">Select some colors:</th>   <th align="left" width="50%">You last submitted:</th>   <tr>    <td align="left" width="20%">

    <html:select property="custId">

    <html:optionsCollection property="customers" label="name" value="custId" /></html:select>

        <!--第一行property指定对应的formbean中的属性;第二行输出用到了optionsCollection来输出一组option元素,select内可以包含多个optionscollection,optionsCollection元素应该有一个name元素来对应特定的javabean的名字,此例中没有指定特定的name属性,那么就将使用关联的formbean,在下面的formbean代码中为其property属性指定了可选集合customers[],并在formbean的构造函数中为customers[]集合初始化,这里要多注意这种用法!另外Customerbean这个bean中只是定义了Customerbean这个类的一半形式,并不是和这个property不要弄混。-->

        </td>    <td align="left" width="80%">    <html:select property="colors" size="6" multiple="true">

        <!--select标签中的size控制多选列表的数量multiple为true为多选,默认为下拉列表。由于是多选列表property属性对应的formbean中的colors应为一个数组,这在下面formbean中的代码中将看到-->

     

         <html:option value="htmlselect.orange">Orange</html:option>     <html:option value="htmlselect.purple">Purple</html:option>

     

         <!--以上是普通option项加入多选列表中value对应实际值!中间为显示值!-->

         <html:option value="htmlselect.red" bundle="htmlselect.Colors" key="htmlselect.red"/>

         <html:option value="htmlselect.blue" bundle="htmlselect.Colors" key="htmlselect.blue"/>

        

         <!--以上为调用properties中的key属性对应值,在struts-config.xml定义为“<message-resources parameter="HtmlSelectColors" key="htmlselect.Colors">”message-resources元素配置的Resourse Bundle的资源文件为 HtmlSelectColors.properties。文件内容“htmlselect.red=Red    htmlselect.blue=Blue”-->

              <html:options collection="colorCollection" property="value" labelProperty="label" />

     

         <!--options元素输出一组option元素,collection属性指定存放列表项的集合对象,这个集合应该存放在page范围内,在本文开头可以找到我们定义的集合collorCollection。-->

        </html:select></td>

       </tr>  </table>  <html:submit>确定</html:submit>  <html:reset>重设</html:reset>  </html:form>  </body></html:html>

     

    对应formbean文件代码:

    (由各个属性名字即可判断出对应的jsp文件中的property,不再敖述!~^-^)

    package com.html.struts.form;

    import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMapping;

     

    /**  * MyEclipse Struts * Creation date: 11-22-2006 *  * XDoclet definition: * @struts.form  */public class LoginForm extends ActionForm { /*  * Generated Methods  */

     /**   * Method validate  * @param mapping  * @param request  * @return ActionErrors  */

    public LoginForm() {

           customers = new CustomerBean[3];

           for (int i=0; i<3 ; i++ ) {         customers[i] = new CustomerBean();         customers[i].setCustId(i);       }

           customers[0].setName("Tom");       customers[1].setName("Linda");       customers[2].setName("Jane");     }

     

      private boolean checkbox1;

      public boolean getCheckbox1(){   return this.checkbox1;     }  public void setCheckbox1(boolean checkbox1){   this.checkbox1=checkbox1;  }    private boolean checkbox2;

      public boolean getCheckbox2(){   return this.checkbox2;     }  public void setCheckbox2(boolean checkbox2){   this.checkbox2=checkbox2;  }    private String strArray[] = new String[0];    public String[] getStrArray(){return this.strArray;}  public void setStrArray(String strArray[]){this.strArray = strArray;}

        private String radioVal="";

      public String getRadioVal() {   return radioVal;  }  public void setRadioVal(String radioVal) {   this.radioVal = radioVal;  }    private CustomerBean customers[];    public CustomerBean[] getCustomers() {   return customers;  }  public void setCustomers(CustomerBean[] customers) {   this.customers = customers;  }    private int custId;

      public int getCustId() {   return custId;  }  public void setCustId(int custId) {   this.custId = custId;  }    private CustomerBean cust = new CustomerBean();    public CustomerBean getCust() {   return cust;  }  public void setCust(CustomerBean cust) {   this.cust = cust;  }    private String colors[];    public String[] getColors() {   return colors;  }  public void setColors(String[] colors) {   this.colors = colors;  }        public ActionErrors validate(ActionMapping mapping,   HttpServletRequest request) {  // TODO Auto-generated method stub  return null; }

     /**   * Method reset  * @param mapping  * @param request  */ public void reset(ActionMapping mapping, HttpServletRequest request) {  // TODO Auto-generated method stub  this.setCheckbox1(false);  this.setCheckbox2(false); }}

     

    CustomerBean 代码如下:

    package com.html.struts.form;

     

    public class CustomerBean {   private int custId;   private String name;   private String[] favColors=new String[0];   public CustomerBean() {   }   public int getCustId(){     return this.custId;   }   public String getName(){     return this.name;   }   public String[] getFavColors(){     return this.favColors;   }

       public void setCustId(int custId){     this.custId=custId;   }   public void setName(String name){     this.name=name;   }   public void setFavColors(String[] favColors){     this.favColors=favColors;   } }

     

    o了!~

     

    最新回复(0)