Struts标签:multibox radio select optionsCollection

    首先要知道这些标签的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;
   }
 }

 

黑色头发  http://heisetoufa.iteye.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值