SEAM+AJAX4JSF 实现动态菜单

该博客介绍了一个基于Java EE的课程分类管理系统的设计与实现。系统通过下拉菜单的方式让用户选择一级分类和二级分类,并在用户选择了一级分类后动态加载对应的二级分类选项。此外,还提供了创建、编辑和保存课程的基本功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

的确方便了很多!
xml 代码
  1. <tr>  
  2.  <td>  
  3.         <s:decorate template="/page/tiles/formFieldDecorate.xhtml">  
  4.             <ui:define name="label">分类1</ui:define>  
  5.             <h:selectOneMenu value="#{_catalog1}" converter="#{entityConverter}">  
  6.     <s:selectItems value="#{appCache.catalog1List}"    
  7.      var="cata1" label="#{cata1.name}" noSelectionLabel="请选择"/>            
  8.     <a4j:support event="onchange"  
  9.      actionListener="#{courseMaintAction.loadCata2ByCata1}"  
  10.      reRender="cata2Area" requestDelay="0"  ajaxSingle="true" />  
  11.    </h:selectOneMenu>  
  12.         </s:decorate>  
  13.        </td>  
  14. </tr>  
  15. <tr>  
  16.  <td>  
  17.          <s:decorate template="/page/tiles/formFieldDecorate.xhtml">  
  18.              <ui:define name="label">分类2</ui:define>  
  19.               <a4j:outputPanel id="cata2Area">  
  20.                <h:selectOneMenu value="#{_catalog2}" converter="#{entityConverter}">  
  21.        <s:selectItems value="#{_catalog2List}" var="cata2" label="#{cata2.name}" noSelectionLabel="请选择" />  
  22.       </h:selectOneMenu>  
  23.      </a4j:outputPanel>  
  24.          </s:decorate>  
  25.  </td>  
  26. </tr>  
java 代码
  1. //$Id: NavigateeAction.java,v 1.1 2007/02/21 11:09:46 chicochen Exp $   
  2. package com.eastidea.yctraining.action;   
  3.   
  4. import static org.jboss.seam.ScopeType.SESSION;   
  5.   
  6. import java.util.List;   
  7. import java.util.Set;   
  8.   
  9. import javax.ejb.Remove;   
  10. import javax.ejb.Stateful;   
  11.   
  12. import org.jboss.seam.annotations.Begin;   
  13. import org.jboss.seam.annotations.Destroy;   
  14. import org.jboss.seam.annotations.End;   
  15. import org.jboss.seam.annotations.In;   
  16. import org.jboss.seam.annotations.Name;   
  17. import org.jboss.seam.annotations.Out;   
  18. import org.jboss.seam.annotations.web.RequestParameter;   
  19.   
  20. import com.eastidea.yctraining.action.base.BaseMaintActionImpl;   
  21. import com.eastidea.yctraining.entity.Catalog1;   
  22. import com.eastidea.yctraining.entity.Catalog2;   
  23. import com.eastidea.yctraining.entity.Course;   
  24. import com.eastidea.yctraining.entity.Organization;   
  25. import com.eastidea.yctraining.service.CourseMaintService;   
  26.   
  27. @Stateful  
  28. @Name("courseMaintAction")   
  29. public class CourseMaintActionImpl extends BaseMaintActionImpl implements CourseMaintAction {   
  30.   
  31.     private static final long serialVersionUID = -7494995399977805979L;   
  32.   
  33.     @In(value="courseMaintService", create=true)    
  34.     private CourseMaintService courseMaintService;   
  35.        
  36.     @In(required = false, scope = SESSION)   
  37.     protected Organization currentOrg;   
  38.        
  39.     //   
  40.     @RequestParameter  
  41.     private Long _courseid;   
  42.        
  43.     @In(required = false)@Out(required = false)   
  44.     private Catalog1 _catalog1;   
  45.     @In(required = false)@Out(required = false)   
  46.     private Catalog2 _catalog2;   
  47.        
  48.     @In(required = false)@Out(required = false)   
  49.     private Course _course;    
  50.        
  51.     @In(required = false)@Out(required = false)   
  52.     private Set<Catalog2> _catalog2List;           
  53.        
  54.     @Destroy @Remove  
  55.     public void destroy() {   
  56.     }   
  57.   
  58.     @Begin(join=true)   
  59.     public void loadCata2ByCata1(){   
  60.         _catalog2List = _catalog1.getCata2Collection();   
  61.     }   
  62.        
  63.     @Begin(join=true)   
  64.     public void create() {   
  65.         myAct = "create";   
  66.         _course = new Course();        
  67.     }   
  68.   
  69.     @End  
  70.     public void save() {   
  71.         if (myAct.equals("true")) {   
  72.             _course.setCatalog1(_catalog1);   
  73.             _course.setCatalog2(_catalog2);   
  74.             _course.setOrganization(currentOrg);   
  75.             courseMaintService.saveCourse(_course);   
  76.         }   
  77.     }   
  78.   
  79.     public void edit() {   
  80.         int i =0;   
  81.         i++;   
  82.            
  83.     }   
  84.   
  85.     public void update() {   
  86.         // TODO Auto-generated method stub   
  87.            
  88.     }   
  89.   
  90.     public void view() {   
  91.         // TODO Auto-generated method stub   
  92.            
  93.     }   
  94.   
  95.     public void delete() {   
  96.         // TODO Auto-generated method stub   
  97.            
  98.     }   
  99.        
  100.     public void cancel() {   
  101.         // TODO Auto-generated method stub   
  102.            
  103.     }   
  104.   
  105. }   
基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值