在应用初始化,也就是WicketFilter初始化的时候,会调用WebApplication的internalInit()(先调用父类的internalInit(),完成初始化资源)完成系统资源的初始化
下面对WebApplication的internalInit()进行解析:
首先调用Application的internalInit()
1、初始化pageSettings
// Install default component resolvers(component resolvers:实现component的展示)
pageSettings.addComponentResolver(new ParentResolver());
pageSettings.addComponentResolver(new AutoComponentResolver());
pageSettings.addComponentResolver(new MarkupInheritanceResolver());
pageSettings.addComponentResolver(new HtmlHeaderResolver());
pageSettings.addComponentResolver(new WicketLinkResolver());
pageSettings.addComponentResolver(new WicketMessageResolver());
pageSettings.addComponentResolver(new WicketMessageTagHandler());
pageSettings.addComponentResolver(new FragmentResolver());
pageSettings.addComponentResolver(new RelativePathPrefixHandler());
pageSettings.addComponentResolver(new EnclosureResolver());
pageSettings.addComponentResolver(new WicketContainerResolver());
pageSettings.addComponentResolver(new BorderBodyResolver());
2、设置ButtonImageResourceFactory
// Install button image resource factory
getResourceSettings().addResourceFactory("buttonFactory",new DefaultButtonImageResourceFactory());
3、保存当前的WebApplication到Application的属性Map<String, Application> applicationKeyToApplication
String通常为Filter的name
String applicationKey = getApplicationKey();
applicationKeyToApplication.put(applicationKey, this);
4、创建sessionStore(The actual store that is used by org.apache.wicket.Session to store its attributes.)
sessionStore = newSessionStore();
5、创建converterLocator(Implementation of {@link IConverterLocator} interface, which locates converters for a given type.)
converterLocator = newConverterLocator();
例如:set(Boolean.TYPE, BooleanConverter.INSTANCE);
至此Application的internalInit()结束
WebApplication的internalInit()的其他部分:
1、设置出错页面
// Set default error pages for HTML markup
getApplicationSettings().setPageExpiredErrorPage(PageExpiredErrorPage.class);
getApplicationSettings().setInternalErrorPage(InternalErrorPage.class);
getApplicationSettings().setAccessDeniedPage(AccessDeniedPage.class);
2、// Add resolver for automatically resolving HTML links
getPageSettings().addComponentResolver(new AutoLinkResolver());
3、// Set resource finder to web app path
getResourceSettings().setResourceFinder(getResourceFinder());
4、提供客户化的配置,提供另外的路径,寻找文件,(不支持自动匹配子目录)
// Add optional sourceFolder for resources.
String resourceFolder = getInitParameter("sourceFolder");
if (resourceFolder != null)
{
getResourceSettings().addResourceFolder(resourceFolder);
}
5、// Configure the app.
主要针对开发环境和部署环境进行app的设置,下面的设置可以在WebApplication的init方法中作相应的改动
下面是针对开发环境的一段部署代码:
getResourceSettings().setResourcePollFrequency(Duration.ONE_SECOND);
getDebugSettings().setComponentUseCheck(true);
getMarkupSettings().setStripWicketTags(false);
getExceptionSettings().setUnexpectedExceptionDisplay(
IExceptionSettings.SHOW_EXCEPTION_PAGE);
getDebugSettings().setAjaxDebugModeEnabled(true);
getDebugSettings().setDevelopmentUtilitiesEnabled(true);
// getDebugSettings().setOutputMarkupContainerClassName(true);
getResourceSettings().setJavascriptCompressor(null);
getRequestCycleSettings().addResponseFilter(EmptySrcAttributeCheckFilter.INSTANCE);
分享到:
相关推荐
【实战Wicket学习总结】 Wicket是一个Java Web应用程序框架,以其独特的组件模型和强大的MVC设计而备受赞誉。本文将基于三年的Wicket项目经验,深入探讨Wicket的关键特性和在实际开发中遇到的问题及解决方案。 1. ...
Apache Wicket是一个为Java Web开发者提供的组件导向的框架,它能够帮助开发者在不编写大量JavaScript代码的情况下快速...通过学习本教程,Java开发者可以有效地掌握Wicket框架,开发出结构清晰、易于维护的Web应用。
然后是`WebApplication InternalInit.txt`,WebApplication是每个Wicket应用的主入口点,它继承自Application类。InternalInit方法通常包含一些内部初始化操作,如注册组件、资源、行为等。通过阅读这部分代码,我们...
2. **Application启动**:通过`WebApplication`的子类启动Wicket应用,通常在`ServletContextListener`的`contextInitialized()`方法中完成。 #### 五、小结 Wicket框架通过其简洁的设计理念、强大的组件系统以及...
**Wicket HelloWorld程序详解** ...Wicket的强大之处在于它的组件模型和强大的数据绑定机制,使得开发动态、交互性强的Web应用变得更加简单和直观。对于初学者来说,理解这些基础知识是进一步学习Wicket的关键。
**Wicket 指南** ...无论你是初学者还是经验丰富的开发者,都可以通过学习Wicket来提升Web应用程序的开发效率和质量。阅读《Wicket开发指南-简体版.pdf》将进一步帮助你掌握这个框架的精髓和实践技巧。
**Wicket官方JAVA教程** Wicket是一款开源的Java Web应用程序框架,它强调组件化和声明式编程模型,使得开发人员...在实际开发过程中,了解并熟练运用这些库中的类和方法,能够更好地发挥Wicket的优势,提高开发效率。
通过分析和学习“wicket-menu-6.5.0.zip”中的源代码,开发者不仅可以掌握如何在Wicket中构建动态菜单,还可以学习到如何将这一技术应用到自己的项目中,提升用户体验。同时,开源的性质意味着可以借鉴社区的最佳...
Wicket 是一个开源的Java Web框架,用于构建可重用且易于维护的Web应用程序。它以其组件模型和数据绑定机制而闻名,与Struts等传统MVC框架相比,提供了更直观和面向对象的编程方式。 在Wicket基础知识培训中,首先...
Wicket 作为一种先进的 Java Web 开发框架,不仅提供了丰富的功能和组件库,而且拥有较低的学习曲线,非常适合希望快速构建高质量 Web 应用的开发者。无论是对于初学者还是经验丰富的开发人员来说,掌握 Wicket 都将...
使用这个版本,开发者可以了解和学习Wicket 6.x系列的特性和使用方法,同时也可以直接在项目中引用这些库文件进行开发。 总结来说,这个压缩包提供了一个使用Apache Maven构建的Apache Wicket项目,版本为6.16.0。...
Wicket 与其他Web框架的不同之处在于它采用了组件驱动的开发模式。每个HTML元素都可以与Java对象对应,这些对象称为组件,它们负责处理用户的交互事件和呈现页面。这种设计使得Wicket能够轻松地实现页面状态管理,...
通过实例和代码片段,读者可以学习到如何利用 Wicket 的特性来构建高效、可维护的Web应用。 其次,"Pro Wicket" 是 Apress 出版的一本全面介绍 Wicket 框架的专业著作。这本书不仅深入介绍了 Wicket 的基本概念,如...
创建基于wicket的web服务入门实例
这个“wicket简单实例”是为了帮助初学者理解Wicket的工作原理和基本操作,通过运行这些示例,你可以深入学习Wicket的核心特性。 1. **Wicket_link**: 这个示例展示了如何在Wicket应用中创建链接。Wicket的`Link`...
随着技术的不断进步,Wicket也在不断发展和完善,未来有望成为更多开发者的首选框架之一。 #### 二、Wicket的配置与入门 **2.1 安装Wicket自带的例子程序** 安装Wicket示例程序可以帮助新手快速了解框架的基本...
### Wicket常用控件使用方法详解 #### 一、引言 Wicket是一个灵活而强大的Java Web框架,它提供了一套简洁高效的API用于构建复杂的Web应用程序。与.NET平台的开发方式相似,Wicket允许开发者在HTML页面中声明控件,...