`
ttf177
  • 浏览: 24617 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

jsf+a4j 实现下拉框联动

阅读更多

项目一直用jsf做,最近一个需求要做一个下拉框二级联动,第一个下拉框显示节点名称,第二个下拉框根据节点名称动态显示该节点下的证照类型。一开始没考虑用ajax,就在第一个下拉框中用了ValueChangeListener和onchange="submit();",但当第一个下拉框值变后submit激发了查库的过程,对查询结果进行了一次过滤。但不用onchange="submit();"的话,后台bean中定义的ValueChangeListener事件就没法调用。在尝试了其他方法后,最后打算用一下ajax,而且以前也没用过,趁这个机会学习一下。

    从网上搜了一通,有dwr和ajax4jsf等开源框架,由于我们组里有个人非常熟悉dwr,而且dwr也支持jsf,所以先用dwr做了一下。由于这个项目查询用的通用的方法,不能自己写sql,用dwr虽然实现了两个下拉框的联动,但是后台查询不起作用,在考虑了技术和时间代价后,决定尝试一下a4j。
    从网上下了a4j的jar包和相关doc,开始了艰难的旅程。其实网上有很多用a4j:support标签实现下拉框联动的例子,但在项目中试了一下都不通,第二个select对应的SelectItems在后台的值已经改变,但页面就是不实时更新。后来单独做个测试页面,能跑通。最后发现两个select是在t:dataTable中,上jboss的网站发现ajax4jsf项目已经被jboss的rich项目合并了,下载rich相关的jar包,jsp页面头部加入:<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>,然后用rich相关的form,table,column等标签(比如<a4j:form>,<rich:column>等)就能和a4j做到最好的兼容。但是由于界面显示的要求,我们使用的是<t:dataTable>(<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>),第一个下拉框的reRender=""属性若写成select2,就不能更新,若写成两个select所在的table,即reRender="dtable",就可以了,而且这个table要用<a4j:region>标签包含一下。整个form也是用的<a4j:form>。主要代码如下:
<a4j:region>
.......
  <t:dataTable id="dtable" value='#{validatelogManage.ejbWebProxy.queryList}' var="query" newspaperColumns="2">
.......
      <%/* 下拉框1,激发联动 */%>
       <rich:column  rendered="#{query.index == 1}">
        <h:selectOneMenu   value="#{query.value}"  style="width:160px">     
         <f:selectItems value="#{query.querymap}" />
         <a4j:support event="onchange" action="#{validatelogManage.changeSelectMap}" reRender="dtable"/>                  
        </h:selectOneMenu> 
       </rich:column>
       
       <%/* 下拉框2,被联动*/%>       
       <rich:column  rendered="#{query.index == 2}"  >
        <h:selectOneMenu   value="#{query.value}" style="width:160px">
         <f:selectItems value="#{query.querymap}"/>
        </h:selectOneMenu> 
       </rich:column>
.......
  </t:dataTable>
</a4j:region> 
    bean中的changeSelectMap方法则根据应用的情况更新第二个下拉框的值即可。第一个下拉框的值绑定到了query.value,所以从value的getValue()方法即可得到第一个下拉框所选的值。
分享到:
评论

相关推荐

    Struts+JSF+filter+Myfaces+A4j+Spring+hibernate+Mysql整合一个项目

    "Struts+JSF+filter+Myfaces+A4j+Spring+hibernate+Mysql整合一个项目"就是一个典型的例子,它涉及到前端展现、业务逻辑处理、数据持久化以及数据库管理等多个层面。以下是对这些技术的详细说明: **Struts**:...

    基于JSF+EJB3+JPA的竞价拍卖系统

    **基于JSF+EJB3+JPA的竞价拍卖系统** 在IT行业中,开发一个拍卖系统是一项复杂的任务,它需要高效、稳定且用户友好的技术栈。"基于JSF+EJB3+JPA的竞价拍卖系统"是利用Java企业级技术构建的这样一个系统,主要依赖于...

    JSF+Spring+Ibatis示例

    JSF+Spring+Ibatis示例,对学习JAVA企业应用开发有巨大的帮助!

    jsf+javabean+jdbc完成对表增删查改

    在本项目中,“jsf+javabean+jdbc完成对表增删查改”指的是使用JSF与JavaBean以及JDBC技术来实现对数据库中表格的基本操作:添加(Insert)、删除(Delete)、查询(Query)和修改(Update)。 首先,让我们深入...

    经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1

    经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...

    拍卖系统jsf+ejb+jpa

    在"拍卖系统jsf+ejb+jpa"的整合中,我们可以想象以下架构: 1. **用户界面**:JSF作为前端,负责接收用户的请求,展示拍卖品信息,处理拍卖出价等操作。用户可以通过JSF组件进行交互,提交的请求会被JSF生命周期...

    JSF+Spring+Hibernate小例子

    **JSF+Spring+Hibernate整合应用详解** 在Java Web开发中,JSF(JavaServer Faces)、Spring和Hibernate是三个常用的技术栈,它们分别负责视图层、业务逻辑层和服务数据持久化层。这个"JSF+Spring+Hibernate小例子...

    JSF+hibernate实现批量删除

    本篇文章将详细探讨如何利用JSF与Hibernate相结合来实现批量删除功能,以及在CRUD(创建、读取、更新和删除)操作中的应用。 首先,我们需要理解JSF的工作原理。JSF是一个基于组件的MVC(Model-View-Controller)...

    EJB+JSF+JPA全JAVAEE视频教程

    EJB+JSF+JPA全JAVAEE视频教程,EJB+JSF+JPA入门觉得有点难吗?JBOSS报错?该教程全程教你学习搭建EJB+JSF+JPA框架!!!

    经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part3

    经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part3

    经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发.part2

    经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发.part2

    jsf+spring+hibernate

    【JSF+Spring+Hibernate整合开发】 JSF (JavaServer Faces)、Spring 和 Hibernate 是 Java 开发中的三大核心技术,常用于构建企业级的 Web 应用程序。它们各自扮演着不同的角色,共同构建了一个强大的后端架构。 1...

    java+jsf+js

    java+jsf+js java+jsf+js java+jsf+js java+jsf+js java+jsf+js java+jsf+js java+jsf+js

    经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part2

    经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part2

    JSF+SSH开发应用实例

    在JSF+SSH环境中,通常会利用Spring的安全模块(如Spring Security)来实现用户认证和授权。用户登录后,根据其角色和权限,可以动态显示不同的功能菜单。这涉及到对用户信息的存储、验证、以及基于角色的权限检查。...

    JSF1.2+EJB3实现的一个项目实例

    jsf1.2+ejb3.0实现的员工管理系统,做成了部分:一部分是ejb端,实现业务逻辑;另一部分是web端,实现web浏览。通过这个实例,你可以学会用jsf1.2和ejb3去做企业项目。内附源代码、分析和部署文档。

    经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第3章

    经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第3章 其他部分详见我的上传列表 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含...

    jsf+spring+hibernate架构的网上商店

    **JSF+Spring+Hibernate 架构的网上商店** 在当今的互联网开发中,JavaScript 面向服务器框架(JSF)、Spring 框架和 Hibernate ORM 工具的组合被广泛用于构建复杂的Web应用程序,尤其是电子商务平台。这种架构模式...

    jsf+spring+servlet的demo

    "jsf+spring+servlet的demo"是一个结合这三个技术的示例项目,旨在展示如何将它们协同工作来创建一个完整的Web应用。 首先,JSF作为前端框架,主要负责生成和处理用户界面。它通过UI组件库(如PrimeFaces或MyFaces...

    spring+jsf+hibernate+ajax 电子商务系统

    《Spring+JSF+Hibernate+Ajax 电子商务系统详解》 在现代互联网开发中,构建一个高效、可扩展的电子商务系统是至关重要的。本系统采用了一种流行的技术栈——Spring、JavaServer Faces (JSF)、Hibernate和Ajax,来...

Global site tag (gtag.js) - Google Analytics