JSF的ajax框架之实例省市区联动

 1.页面
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<a4j:region><tr>
            <td

 align="right" class="zcbktd">
             

国籍:
            

</td>
             

 <td align="left" class="zcbktd">
             

<h:selectOneMenu  id="t1id" value="#{projectBean.t1}" required="true">
             

<f:selectItem itemLabel="选择国籍" itemValue=""/>
             

<a4j:support action="#{projectBean.changeNationPct1}"
                             event="onchange"

reRender="t2id,t3id,t4id"></a4j:support>
             

 <f:selectItems  value="#{projectBean.listNationPct1}" />
             

</h:selectOneMenu>
             

<span style="color:red;">*</span>
             

<h:message for="t1id"></h:message>
            

</td>
           </tr>
           <tr>
            <td

 align="right" class="zcbktd">
             

省:
            

</td>
             

 <td align="left" class="zcbktd">
             

<h:selectOneMenu id="t2id" value="#{projectBean.t2}">
             

<f:selectItem itemLabel="选择省类别" itemValue=""/>
             

<a4j:support action="#{projectBean.changeNationPct2}"
                             event="onchange"

reRender="t3id,t4id"></a4j:support>
             

 <f:selectItems  value="#{projectBean.listNationPct2}" />
             

</h:selectOneMenu>
            

</td>
           </tr>
           <tr>
            <td

 align="right" class="zcbktd">
             

市:
            

</td>
             

 <td align="left" class="zcbktd">
             

<h:selectOneMenu id="t3id" value="#{projectBean.t3}">
             

<f:selectItem itemLabel="选择市类别" itemValue=""/>
             

<a4j:support action="#{projectBean.changeNationPct3}"
                             event="onchange"

reRender="t4id"></a4j:support>
             

 <f:selectItems  value="#{projectBean.listNationPct3}" />
             

</h:selectOneMenu>
            

</td>
           </tr>
            

<tr>
            <td

 align="right" class="zcbktd">
             

县:
            

</td>
             

 <td align="left" class="zcbktd">
             

<h:selectOneMenu id="t4id" value="#{projectBean.t4}">
             

<f:selectItem itemLabel="选择县类别" itemValue=""/>
             

 <f:selectItems  value="#{projectBean.listNationPct4}" />
             

</h:selectOneMenu>
            

</td>
           </tr>
           

</a4j:region>
2.表结构
CREATE TABLE [dbo].[nationPct] (
 [id] [int] NOT NULL ,
 [name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [fatherId] [int] NULL ,
 [classId] [int] NULL ,  //国家是1,省2,市3,区4
 [subCode] [varchar] (64) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
insert   nationPct(id,name,fatherId,classId,subCode)   values( 1 , '中国' , 0 , 1 , '1-' )
insert   nationPct(id,name,fatherId,classId,subCode)   values( 2 , '美国' , 0 , 1 , '2-' )
insert   nationPct(id,name,fatherId,classId,subCode)   values( 3 , '湖北省' , 1 , 2 , '1-3-' )
insert   nationPct(id,name,fatherId,classId,subCode)   values( 4 , '武汉市' , 3 , 3 , '1-3-4-' )
insert   nationPct(id,name,fatherId,classId,subCode)   values( 5 , '青山区' , 4 , 4 , '1-3-4-5-' )


3.
projectBean.java
private List listNewsType1;// 一级标题

 private Integer t1;

 private List listNewsType2;// 二级标题

 private Integer t2;

 private List listNewsType3;// 三级标题

 private Integer t3;

 private SelectItem[] itemTjs = { new SelectItem(1, "是"),
   new SelectItem(0, "否") };

 public List getListNewsType1() {
  this.listNewsType1 = new ArrayList();
  List list = newstypeService.findAll();
  if (list != null && list.size() > 0) {
   for (int i = 0; i < list.size(); i++) {
    Newstype nt = (Newstype) list.get(i);
    if (nt.getClassId() == 1) {
     this.listNewsType1.add(new SelectItem(nt.getToid(), nt
       .getTnewstype()));
    }
   }
  }
  return listNewsType1;
 }

 public void changeNewsType1() {
  List list = newstypeService.getNewsTypeByFather(getT1());
  this.listNewsType2 = new ArrayList();
  if (list != null && list.size() > 0) {
   for (int i = 0; i < list.size(); i++) {
    Newstype nt = (Newstype) list.get(i);
    this.listNewsType2.add(new SelectItem(nt.getToid(), nt
      .getTnewstype()));
   }
  }

 }

 public void changeNewsType2() {
  List list = newstypeService.getNewsTypeByFather(getT2());
  this.listNewsType3 = new ArrayList();
  if (list != null && list.size() > 0) {
   for (int i = 0; i < list.size(); i++) {
    Newstype nt = (Newstype) list.get(i);
    this.listNewsType3.add(new SelectItem(nt.getToid(), nt
      .getTnewstype()));
   }
  }

 }

 public void setListNewsType2(List listNewsType2) {
  this.listNewsType2 = listNewsType2;
 }

public void getNewsTypes() {
  this.listNewsType = new ArrayList();
  List list = newstypeService.findAll();
  if (list != null && list.size() > 0) {
   for (int i = 0; i < list.size(); i++) {
    Newstype nt = (Newstype) list.get(i);
    this.listNewsType.add(new SelectItem(nt.getToid(), nt
      .getTnewstype()));
   }
  }
 }
 public List getListNewsType2() {
  if (listNewsType2 == null) {
   this.listNewsType2 = new ArrayList();
   List list = newstypeService.findAll();
   if (list != null && list.size() > 0) {
    for (int i = 0; i < list.size(); i++) {
     Newstype nt = (Newstype) list.get(i);
     if (nt.getClassId() == 2) {
      this.listNewsType2.add(new SelectItem(nt.getToid(),

nt
        .getTnewstype()));
     }
    }
   }
   return listNewsType2;

  }
  return listNewsType2;
 }

 public void setListNewsType1(List listNewsType1) {
  this.listNewsType1 = listNewsType1;
 }

 public List getListNewsType3() {
  if (listNewsType3 == null) {
   this.listNewsType3 = new ArrayList();
   List list = newstypeService.findAll();
   if (list != null && list.size() > 0) {
    for (int i = 0; i < list.size(); i++) {
     Newstype nt = (Newstype) list.get(i);
     if (nt.getClassId() == 3) {
      this.listNewsType3.add(new SelectItem(nt.getToid(),

nt
        .getTnewstype()));
     }
    }
   }
  }
  return listNewsType3;
 }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值