`
x98zero
  • 浏览: 109204 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

wicket 三问 : 资源 , refactoring , Spring

阅读更多
請問這裡的 Wicket 前輩一些問題

第一個問題 : Wicket 是否有能力把資源(images , css , data files)從 WEB-INF/clssses or JAR 中搬運出來? (從前使用 Tapestry 時可以)
一般我們在開發 wicket 元件時,總是希望 該元件能與 CSS 或是 JPG 放在一起,把 JAR 檔交給別人 , 而且直接使用 WYSIWYG HTML editor 時,可以使用『相對路徑』連結資源檔...
也就是說,假設編輯 WEB-INF/src/com/foo/GuestBook.html 時,裡面相關的 CSS / images 也直接放在 WEB-INF/src/com/foo/ 子目錄內(當然,存檔後,會被同樣複製到 WEB-INF/classes/com/foo/ 目錄內),而 GuestBook.html 中的 CSS / JPG , 只要用相對路徑編寫 (./welcome.jpg , src="./sorttable.js")

我嘗試撰寫相對路徑,但是 無法被正確解譯, deploy 時,他變成相對於 application context 的路徑,很惱人...
而 header contribution 的 .js 檔案 , 也無法搞定... 似乎都必須寫成絕對路徑,這點使我很煩惱

我有幾個需求: 我的 source code 都放在 WEB-INF/src 裡面,而且連同相關的 images/css 一起塞在 WEB-INF/src 與該 Component 放在一起,這樣 eclipse 可以一邊 compile 一邊把資源複製到 WEB-INF/classes 內...
我不想把 JPG/CSS 放在 WEB-INF or JAR file 之外, 是否有辦法辦到?


可以辦到,不過程式要多寫一行 code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MyPage.html,下面是 head 片斷:
<html xmlns:wicket="http://wicket.sourceforge.net/">
<head>
   <script wicket:id="js" language="JavaScript" type="text/javascript" src="MyPage.js"></script>
   <link wicket:id="css" rel="Stylesheet" href="MyPage.css" type="text/css" />
</head>
<body>
....
 
MyPage.java,下面是 constructor 片斷:
 
    public MyPage(String id) {
        super(id);
        //就加這兩行:
        add(new JavaScriptReference("js", MyPage.class, "MyPage.js"));
        add(new StyleSheetReference("css", MyPage.class,"MyPage.css"));
    }

用上面的寫法,就可以將 MyPage.java, MyPage.css, MyPage.js, MyPage.html 都放在同一個 source package 下。


第二個問題 : 現在是否有任何 eclipse plugin 支援比較完整的 wicket refactoring ? 當我們在搬移 java 檔案時,其所屬的 .html 檔案一起搬動... 更聰明的話,連 html 裡面的資源連結都做修正 ... 是否有此 plugin ?


已經有了
http://www.laughingpanda.org/mediawiki/index.php/Wicket_Bench
不過我自己還沒開始用啦.....


第三個問題: 現在有辦法把 spring 的 beans 注入到 wicket 的元件中嗎? 我看過幾個 solution (包括 ingramchen 2/17 在 blog 的 code ) , 都是在 wicket component 中去主動呼叫的 , 總覺得這種解法似乎不是很漂亮... 是否有更『被動』的解法呢? (亦即:交給 spring 去注入)... 也許短期沒辦法,未來是否有此計畫呢?


我的寫法是 wicket official spring 的 package 還沒出之前,自己先寫一套來
用的。現在 wicket 已經有 official integration 了。
到 snap-shot 看:

http://sourceforge.net/project/showfiles.php?group_id=119783&package_id=173489&release_id=397958

你可以看到 wicket-spring 的相關 package 和 example。

詳細的說明可以看:

http://www.wicket-wiki.org.uk/wiki/index.php/Spring

上面這篇文章已經有點舊了,新版的寫法不用特別去繼承 InjectableWebPage,所有的 component 都可以直接用 annotation inject。

簡單整理一下步驟:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
第一步:web.xml
<servlet>
    <servlet-name>wicket</servlet-name>
    <servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
    <init-param>
        <param-name>applicationFactoryClassName</param-name>
        <param-value>wicket.spring.SpringWebApplicationFactory</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
 
第二步,spring 的設定:  applicationContext.xml
<!-- setup wicket application -->
<bean id="wicketApplication" class="project.MyApplication"></bean>
 
第三步,java 程式:
 
public class MyPage extends WebPage {
 
    //用 annotation 注釋,runtime 時 wicket 會去 spring context 裡找出
    //myService 這個 bean 注入。
    @SpringBean
    private MyService myService;
 
    public MyPage() {
          //直接使用即可,wicket 會自己 inject
          myService.doSomething(....) ;
    }
}


這個作法需要 annotation,也就是 jdk5... ,如果不能用 jdk5 的話,可能要
用 common-attribute,那就麻煩多了,倒不如用舊方法,自己去 lookup。

最後,上面這是根據二月的snapshot 寫的,wicket 一直不斷在翻新,也許過
了一個月之後,又會有更簡單的寫法,所以上面僅供參考。要找最新的寫法得
上 mailing list 去挖。1.2版 大概月底就會出了吧,到時 api 會穩一點。
分享到:
评论

相关推荐

    wicket-kurs:使用 Spring 进行 Wicket 课程的基本起点

    标题“wicket-kurs:使用 Spring 进行 Wicket 课程的基本起点”和描述“检票口 使用 Spring 进行 Wicket 课程的基本起点”暗示了这是一个关于结合 Wicket 和 Spring 的初级教程,旨在帮助开发者迈出学习的第一步。...

    wicket+spring

    **Wicket + Spring 整合详解** 在Java Web开发领域,Wicket和Spring都是非常流行的框架,它们分别在用户界面和依赖注入方面有着出色的表现。本文将深入探讨如何将这两个框架整合,创建一个高效、可维护的Web应用...

    Spring技术内幕:深入解析Spring架构与设计原理

    总之,《Spring技术内幕:深入解析Spring架构与设计原理》这本书是深入理解Spring框架的宝贵资源,它不仅介绍了Spring的技术细节,还揭示了Spring在软件开发生态中的重要地位,以及它如何适应和引领技术潮流。...

    wicket_spring_ibatis所用到的jar

    本资源包含的是开发基于Wicket、Spring和iBATIS的Web应用程序所需的基础JAR文件。 首先,让我们来了解一下这三个框架: 1. **Wicket**:Wicket是一个开源的Java Web框架,它以组件为基础,具有很强的可重用性和可...

    spring-jpa-wicket-bootstrap:使用 Spring、JPA、Hibernate、Wicket 和 Bootstrap 的 J2EE Web 模板。 在 Tomcat 和 Postgres DB 上测试

    这是一个工作模板项目,它展示了一个示例多层 J2EE Web 应用程序,其中包含Apache Wicket 、 Spring IoC 、 JPA/Hibernate集成和基于Bootstrap的前端。 它演示了MvC 、 SoC 、 IoC 、 DAO 、 Service layer和Open ...

    wicket6.0 + hibernate4.1 + spring3.1 基于J2EE的实例程序

    《基于J2EE的Wicket6.0+Hibernate4.1+Spring3.1实例程序详解》 在当今的Web开发领域,Java EE(J2EE)框架的使用广泛而深入,尤其在企业级应用中占据重要地位。本文将详细探讨一个基于J2EE的实例程序,它整合了...

    wicket6.0 + hibernate4.1 + spring3.1 基于JPA的实例程序。

    这是一个基于Java技术栈的Web应用程序实例,主要使用了Wicket 6.0、Hibernate 4.1和Spring 3.1框架,并结合JPA(Java Persistence API)进行数据持久化操作。下面将详细阐述这些技术和它们在项目中的作用。 1. ...

    wicket_examples:wicket_examples

    **Wicket 框架详解** Wicket 是一个开源的、基于 Java 的Web 应用程序框架,它提供了一种简单而强大的方式来构建动态、交互式的Web 应用。这个框架的核心理念是将Web 页面的逻辑与HTML 分离,通过组件模型实现两者...

    wicket-presentation:Apache Wicket演示文稿的源代码-apache source code

    此外,还可以学习如何利用Maven或其他构建工具管理项目,以及如何将Wicket与Spring、Hibernate等其他流行框架集成。 总之,“Apache Wicket演示文稿的源代码”是一个宝贵的资源,对于希望深入了解和掌握Wicket框架...

    wicket-todo:用 wicket 做 todo

    【标题】"wicket-todo:使用Wicket构建待办事项应用" 在本文中,我们将深入探讨如何利用Java中的Web框架Apache Wicket来创建一个名为“wicket-todo”的待办事项应用程序。Apache Wicket是一个组件驱动的框架,它允许...

    wicket-spring-security-example:Wicket SpringSecurity 示例

    Wicket SpringSecurity 示例 ###如何开始 mvn 全新安装 mvn 码头:运行 在浏览器中打开 ###做什么的 证明 Wicket 可以与 Spring Security 一起使用。 ### 演示 使用硬编码登录密码进行身份验证、角色授权、URL ...

    wicket,spring,hibernate 食品网站

    2012年,我的毕业设计,涉及到的技术是wicket,spring,hibernate,通过这三大框架,将知识结合起来,开发了这个食品网站。 代码非常的详细,都有注释 网站的后台是用EXTJS框架,实现增删改查,前台能实现用户登录...

    wicket-spring-template:带有 wicket spring 和 hibernate 的模板项目

    标题“wicket-spring-template:带有 wicket spring 和 hibernate 的模板项目”揭示了这是一个基于特定技术栈的项目模板,主要整合了三个关键的技术:Wicket、Spring和Hibernate。Wicket是一个Java Web应用框架,强调...

    wicket-ace:用于Wicket的AceEditor集成

    textarea wicket:id =" code " &gt; &lt;/ textarea &gt; 更多例子 您可以通过将wicket-ace maven项目导入到IDE中并运行Start类来运行示例。 下载 wicket-ace托管在Maven Central中 &lt; groupId&gt;org.rauschig ...

    wicket-site:Apache Wicket网站的镜像

    Wicket新网站 该存储库包含的站点。 项目信息 该站点基于 。 因此,您必须熟悉Markdown模板语言,并安装了Jekyll(3+版本)才能为该项目做出贡献。 运行项目 只需转到项目根文件夹并执行jekyll serve -w即可生成静态...

    wicket-js:wicket-js 使在 Wicket 组件和行为中编写和处理自定义 JavaScript 和 jQuery 变得容易

    Wicket JavaScript 和 jQuery wicket-js 使在组件和行为中编写和处理自定义 JavaScript 和变得容易。 它有助于将 Wicket Ajax Behavior 侦听器与实际客户端 UI 功能分开,同时保持与 Wicket 组件的耦合。 它提供了...

    wicket-dashboard:使用Apache Wicket的简单Web仪表板

    使用wicket-dashboard,您可以轻松地将带有标准和自定义小部件的仪表板添加到wicket应用程序中。 对于仪表板,您可以指定列数,拖放窗口小部件,删除窗口小部件,添加新窗口小部件,更改窗口小部件设置,折叠窗口小...

    wicket_workshop:使用 Apache Wicket、Spring Framework 和 Google Guice 的示例 Web 应用程序

    检票口工作坊 这是一个使用的示例 Web 应用程序。 详情请查看 。 使用 Maven 运行项目: $ mvn jetty:run 当 PermGen 空间出现 OutOfMemoryError 时,设置 MaxPermSize。 例如: $ export MAVEN_OPTS="-XX:...

    wicket-sample:示例 Apache Wicket Web 应用程序,用于使用 Apache Fortress 演示基本的 Java EE 安全性和 RBAC

    wicket-sample README 本文档演示了如何获取、构建和部署 Apache Fortress Wicket 示例应用程序。 要完成本教程,请首先按照本 README 中的步骤进行操作。 接下来是这里的步骤: 先决条件 Java 8++ Apache ...

    wicket-gatling:Wicket-Gatling 集成

    Wicket-Gatling 集成 仅使用开箱即用的 Gatling 时,使用 Gatling 框架对基于 Wicket 的 Web 应用程序进行负载测试并不容易。 这是因为每次请求页面时,有状态 Wicket 页面都会重写 URI,以保持页面的正确状态。 ...

Global site tag (gtag.js) - Google Analytics