逻辑分离
<a4j:commandLink actionListener="#{trafficDocNoAssDemoAction.save}"
rendered="#{!trafficDocNoAssDemoAction.managed}">
<f:actionListener binding="#{trafficDocNoAssDemoAction.cleanEntity()}"/> </a4j:commandLink>
<a4j:commandButton action="#{trafficDocNoAssDemoAction.cleanEntity}"
>
<f:actionListener binding="#{showControl.canclePanel()}"/>
<f:actionListener binding="#{cleanSubmittedValueListaner.getInstance('editForm')}"/>
</a4j:commandButton>
在一个按钮上增加多个动作,将无关的动作拆分,便于逻辑复用。
顺序问题
建议将一个按钮上要完成的各种动作拆分,但是如果动作之间需要依赖时就必须控制各动作的执行顺序。
如下在refBspgenparAction.save之后再执行entitySupport.flush()
<a4j:commandLink actionListener="#{refBspgenparAction.save}"
value="submit" styleClass="button">
<f:actionListener binding="#{entitySupport.flush()}"/>
<f:actionListener binding="#{xxxx}"/>
</a4j:commandLink>
Jsf规范规定了动作组件(比如h:..command..,a4j:..command..)上各种动作的顺序按下面顺序执行
1)按页面顺序<f:actionListener
2)actionListener属性(规范已经不建议使用了,a4j:commandLink运行时将之变成第一个<f:actionListener,相当于在最前面增加个<f:actionListener)
3)action属性,最后执行,主要功能是负责导航,建议不在里面做业务操作,下面的示例导致entitySupport.flush()在refBspgenparAction.save前面执行。
<a4j:commandLink action="#{refBspgenparAction.save}">
<f:actionListener binding="#{entitySupport.flush()}"/>
建议:所有按钮都使用a4j:..command.的,并将最先需要执行的方法放入actionListener属性中。
分享到:
相关推荐
Action 层是处理页面逻辑的层次,它主要负责处理用户的请求,例如接收请求参数,验证参数,处理业务逻辑等。Action 中不应该包含业务逻辑,而是专注于处理页面逻辑。 Action 只做和页面相关的事,不操作业务对象。...
MVC模式是一种软件设计模式,用于分离应用程序的数据、业务逻辑和用户界面。Model代表数据模型,存储和管理应用程序的核心数据;View负责显示数据;Controller作为模型和视图之间的桥梁,处理用户输入并调用模型进行...
这种设计模式旨在促进代码的可测试性和可维护性,同时提供了一种方式来分离业务逻辑、用户界面和控制逻辑。 在*** MVC中,Filter(过滤器)是一种用于在处理HTTP请求的不同阶段插入自定义处理逻辑的机制。使用...
Struts通过ActionServlet作为控制器,实现了HTTP请求与Java对象的映射,使得业务逻辑和表现层分离,提高了代码的可维护性和可扩展性。 接着,书中详细讲解了Struts的核心组件,如ActionForm、Action、ActionMapping...
Struts2是一个基于MVC(Model-View-Controller...这种架构使得开发者可以将业务逻辑、控制逻辑和视图逻辑分离,提高了代码的可复用性和可维护性。同时,拦截器机制提供了强大的扩展能力,可以灵活地处理各种应用场景。
- **解耦**:拦截器使得业务逻辑和框架逻辑得以分离,提高了代码的可维护性和复用性。 - **简化Action实现**:将通用功能从Action中抽离,减少Action的复杂性。 - **代码模块化**:将多个Action共有的功能封装到拦截...
这样,测试人员可以专注于编写用例,而开发人员则负责实现执行这些用例的逻辑。 2. **YAML管理测试数据**: 在YAML文件中,我们可以定义测试数据的结构,例如,每个用例可能包含以下字段:`name`(用例名称)、`...
Struts拦截器是Java Web开发中的一个重要概念,尤其在基于MVC框架的Struts2中,它是实现业务逻辑控制和视图分离的关键组件。拦截器是AOP(面向切面编程)思想的一种体现,用于在动作执行前后进行额外的操作,如日志...
这些模板语言能够帮助开发者将业务逻辑与视图逻辑分离,提升代码的可维护性。 5. **插件体系** Struts2有一个强大的插件系统,提供了诸如文件上传下载、JSON支持、AJAX集成、Tiles布局等众多功能。这些插件可以...
Struts2基于拦截器模型,使得业务逻辑与控制逻辑分离,实现了灵活的请求处理和强大的异常管理。 二、Struts2的核心组件 1. **Action类**:它是处理用户请求的中心,每个Action对应于一个业务逻辑。用户通过URL触发...
此外,Struts2引入了拦截器,使得业务逻辑和框架逻辑分离,更易于扩展和维护。在Struts1中,许多功能是通过ActionServlet和ActionForm实现的,而在Struts2中,这些功能往往可以通过配置拦截器来完成。 总结来说,...
MVC模式是一种广泛应用于Web应用程序的架构模式,它将业务逻辑、用户界面和数据处理分离,以提高代码的可维护性和可扩展性。 **一、控制器的角色** 控制器作为用户请求和应用逻辑之间的桥梁,主要负责接收用户的...
总的来说,Struts1和Struts2在处理请求和执行业务逻辑方面有相似之处,但Struts2引入了更灵活的拦截器机制,使得业务逻辑和视图渲染更加分离,提高了代码的可维护性和可扩展性。同时,Struts2的配置管理也更为精细,...
- 优点:提高了代码的可复用性和可维护性,将业务逻辑与控制逻辑分离,使得系统更加模块化。 - 缺点:过多的拦截器可能会导致性能下降,需要合理设计和优化拦截器链。 综上所述,Struts2拦截器是实现业务逻辑扩展...
3. **分离视图**:尽量避免在Action中混杂视图逻辑,使用模板技术如JSP、FreeMarker等。 4. **测试**:编写单元测试,确保Action的正确性。 通过本教程的学习,读者将能够熟练掌握Struts2.0框架,理解其核心机制,...
ASP.NET MVC框架是微软开发的一款用于构建Web应用程序的开源框架,它基于模型-视图-控制器(MVC)设计模式,提供了高度可测试性和代码分离。在这个“ASP.NET MVC框架开发系列课程”的第七部分,我们将深入探讨Action...
2. 拦截器:拦截器是Struts2的核心特性,它们在Action执行前后按顺序执行,实现如日志、权限检查、事务管理等功能。自定义拦截器可以扩展框架功能。 四、Action与结果 Action类是Struts2处理请求的核心,每个Action...
3. **Interceptor(拦截器)**:Struts2的拦截器机制使得在Action执行前后可以插入额外的处理逻辑,如权限验证、日志记录等。通过在`struts.xml`中配置拦截器栈,可以控制拦截器的执行顺序。 4. **Result类型**:...
- Bean配置:在Struts2中,可以通过XML配置文件来定义和管理Bean,这样可以使业务逻辑与视图层分离,提高代码的可重用性。 - 常量配置:常量可以在多个配置文件中定义,如`struts-default.xml`、`struts-plugin....
Struts1是最早的版本,它引入了Action和Form Bean的概念,提供了请求处理和业务逻辑分离的方式。Struts1的核心组件包括ActionServlet、Action、ActionForm和配置文件struts-config.xml。ActionServlet作为控制器接收...