`

Click Framework最佳实践-模板,菜单,日志,错误处理

阅读更多

模板

强烈推荐使用模板。模板提供很多好处:

  • 大幅减少需要维护的HTML数量
  • 确保应用有共同的look and feel
  • 使全局应用的改变非常容易
  • 怎样使用模板参看Page Templating应用例子

 

菜单

很多应用使用Menu集中控制页面的导航。菜单项在WEB-INF/menu.xml中定义,方便变更。

菜单项通常定义在border模板中,这样在整个应用中都可用。菜单控制不支持HTML呈现,因此需要定义Velocity宏来呈现菜单。在border模板中这样调用这个宏

 

 

#writeMenu($rootMenu)

 

 

 

使用宏呈现你的菜单的一个好处是在不同的应用中重用这个代码,修改菜单,只需要简单的编辑WEB-INF/menu.xml。把宏定义在根目录下的macro.vm文件中,它会被Click自动加载。

 

使用宏可以创建动态菜单,使用isUserInRoles()只显示用户被授权可以访问的菜单项。

 

#if ($menu.isUserInRoles())
   ..
#end 

 也可以使用JavaScript来表现动态的动作,像下拉菜单,参看Menu页面在Click Examples.  

 

日志

对于页面日志使用Log4j。另一个可替换的是Commons Logging。如果你使用Commons Logging,请注意在一些应用服务器上会有跟类加载器有关的问题,并确保使用最新版本。

最好在基类中定义logger:

public class BasePage extends Page {
	
    protected Logger logger;
	
    public Logger getLogger() {
        if (logger == null) {
            logger = Logger.getLogger(getClass());
        }
        return logger;
    }
} 

 使用这个模式,都应继承BasePage类,以至于可以使用getLogger()方法。

public class CustomerListPage extends BasePage {
	
    public void onGet() {
        try {
            ..
        
        } catch (Exception e) {
            getLogger().error(e);
        }
    }
} 

 

如果有大量的debug信息,应该使用isDebugEnabled控制是否应该被调用。

public class CustomerListPage extends BasePage {
	
    public void onGet() {
        if (getLogger().isDebugEnabled()) {
            String msg = ..
            
            getLogger().debug(msg);
        }
        
        ..
    }
} 

 

注意Click的日志功能不是为应用设计的,而仅是为内部使用。在production状态下运行时Click不会产生任何日志输出。

 

错误处理

未被处理的错误会被转发到ErrorPage上显示。如果需要额外的处理页面,需要创建并在WEB-INF/click.xml中定义。

<pages package="com.mycorp.page" automapping="true"/>
  <page path="click/error.htm" classname="ErrorPage"/> 
</pages> 

 通常处理事务错误在service层或者通过servlet Filter并且不应在其中包含错误处理逻辑。

可能为定制日志使用错误页面。

例如应用需要未被处理的错误被记录到应用日志中(而不是System.out),那么ErrorPage应该被配置。例如记录错误的日志页面:

package com.mycorp.page.ErrorPage;
..

public class ErrorPage extends net.sf.click.util.ErrorPage {
	
    public void onDestory() {
    	Logger.getLogger(getClass()).error(getError());
    }
} 

 

 

分享到:
评论
2 楼 bill.end 2009-03-18  
elvishehai 写道
你我的思想有别啊

? 此话怎讲?
1 楼 elvishehai 2009-03-17  
你我的思想有别啊

相关推荐

    Python库 | robotframework_browser-2.4.1-py3-none-any.whl

    6. **最佳实践** - 使用变量存储重复使用的URL和元素选择器,提高代码可读性和可维护性。 - 编写清晰的测试步骤,每个步骤对应一个关键字,便于理解测试流程。 - 结合Robot Framework的其他库,如`...

    Python库 | robotframework_SikuliLibrary-1.0.4-py3-none-any.whl

    **Python库 | robotframework_SikuliLibrary-1.0.4-py3-none-any.whl** 这个资源是一个针对Python开发的库,名为`robotframework_SikuliLibrary`,版本为1.0.4。它是专门为Robot Framework设计的一个扩展库,Robot ...

    robotframework-selenium2library-1.5.0

    4. 报告与日志:Robot Framework自动生成详细的测试报告和日志,清晰地展示测试结果,包括每个步骤的状态、日志信息和执行时间。这对于测试团队追踪和分析测试过程及结果至关重要。 5. 扩展性:Robot Framework和...

    Click framework 快速入门指南

    Click框架快速入门指南 Click框架是一个轻量级、模块化的Java Web开发框架,它提供了简单易用的API,使得开发者可以快速构建高效、可维护的Web应用。本指南将帮助你了解Click的基本概念,以及如何使用它来创建一个...

    Python库 | robotframework-browser-10.0.1.tar.gz

    Python库Robotframework-Browser是用于自动化Web浏览器测试的框架,其版本10.0.1提供了丰富的功能和改进。Robot Framework是一款广泛使用的通用自动化框架,它支持关键字驱动的测试方法,使得测试脚本易于编写和维护...

    Python库 | robotframework-selenium2library-1.7.0.win-amd64.exe

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:robotframework-selenium2library-1.7.0.win-amd64.exe 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    深度挖掘.NET Framework 2.0系列课程-(1)Click-Once 安装技术

    《深度挖掘.NET Framework 2.0系列课程——(1)Click-Once安装技术》 在.NET Framework 2.0时代,微软引入了一项创新的部署技术——Click-Once,它为开发者提供了一种简单而安全的方式,使得应用程序可以被用户轻松...

    Microsoft .NET Framework 2.0 Windows-based Application Development (70-526) Mega Guide

    6. 错误处理和调试,包括异常处理和调试工具的使用。 7. 安全性,如代码访问安全性和身份验证。 8. 应用程序部署和配置,包括ClickOnce部署技术。 这本书不仅对备考70-526的考生来说是一份宝贵的资料,对于任何想要...

    Allow right cLick - Allow copy-1.2.8.zip

    名称:Allow right cLick - Allow copy ---------------------------------------- 版本:1.2.8 作者:Allowso 分类:生产工具 ---------------------------------------- 概述:取消阻止右键单击菜单,突出显示并...

    robotframework-selenium2library-3.0.0.tar.gz

    标题中的"robotframework-selenium2library-3.0.0.tar.gz"是一个开源自动化测试框架Robot Framework的一个扩展库——Selenium2Library的3.0.0版本的压缩包。Robot Framework是一个通用的、基于关键字驱动的自动化...

    图片放大缩小工具--菜单.zip

    10. **异常处理**:在处理文件I/O或图像操作时,可能会遇到错误,如文件不存在或格式不支持。因此,良好的异常处理机制是必要的,可以使用try-catch语句来捕获和处理可能出现的问题。 以上是关于"图片放大缩小工具-...

    MapBasic--菜单栏设计

    使用`On Click`或`On Select`语句来指定触发的代码,例如`On Click myMenuItem GoSub OpenMap`,当用户点击myMenuItem时,程序将跳转到OpenMap子程序执行相关操作。 6. **子菜单**:要创建子菜单,可以使用`SubMenu...

    robotframework-selenium2library-1.8.0

    2. **表单处理**:支持填写表单、选择下拉菜单选项、勾选复选框和单选按钮。 3. **页面导航**:关键词允许用户模拟用户行为,如前进、后退、刷新和加载特定URL。 4. **等待机制**:提供等待页面加载、元素出现或消失...

    robotframework-2.8.1.win32.zip

    Robot Framework是一个开源自动化测试框架,主要适用于软件测试和任务自动化。它支持关键字驱动测试方法,提供了丰富的库,可用于Web应用、数据库、操作系统等多领域的测试。"robotframework-2.8.1.win32.zip" 是这...

    dnet-C#菜单导航例程.rar

    我们可以使用MenuStrip的Items属性添加新的菜单项,通过ToolStripMenuItem的Text、Name和Click事件属性来设置菜单项的文本、唯一标识和点击响应。 示例代码: ```csharp MenuStrip menuStrip = new MenuStrip();...

    VS2008-WPF(Cider)+clickOnce+讲师-田京

    这个主题涵盖了微软的Windows Presentation Foundation(WPF)框架,Cider集成开发环境(IDE)的使用,以及clickOnce部署技术的实践应用。 **Windows Presentation Foundation (WPF)** 是.NET Framework 3.0引入的...

    Allow Right-Click-0.5.7.zip

    名称:Allow Right-Click ---------------------------------------- 版本:0.5.7 作者:lunu.bounir 分类:生产工具 ---------------------------------------- 概述:这个扩展是一个干净的实现,可以在阻止它的...

    javascript经典特效---内部菜单展开效果.rar

    7. **递归与循环**:如果菜单具有多级结构,那么在处理子菜单时,可能需要使用递归或循环来遍历和操作所有菜单项。 通过学习和理解这些知识点,你可以创建出各种复杂的菜单展开效果,并且能够根据需求自定义交互...

    Python-图形菜单化的MegaCli工具

    4. **argparse** 或 **click**:处理命令行参数,将用户选择转化为Python命令。 **使用流程** 1. 安装Python环境,确保Python和必要的库已安装。 2. 解压`megamenu-master`压缩包,进入目录。 3. 运行Python脚本,...

    robotframework-2.8.4.tar.gz

    **Robot Framework** Robot Framework是一个开源自动化测试框架,适用于多种类型的测试和验收,包括软件测试、配置管理、数据验证等。它的设计目标是提供一个可扩展且易于使用的平台,支持创建可读性强、易于维护的...

Global site tag (gtag.js) - Google Analytics