Wicket tips
今天對wicket小研究了一下,同struts比較,的確有其過人之處,它更具有強(qiáng)烈C/S結(jié)構(gòu)的UI色彩,可以將
前臺的美工&后臺的程序員分工明確,關(guān)于更多的比較以及特點(diǎn),可以參考<Wicket開發(fā)指南>,作者已經(jīng)講的很詳細(xì)了。
這里就今天我實(shí)踐過程中遇到的問題備忘一下.
一、代碼結(jié)構(gòu)
例子很簡單,就是按照<Wicket開發(fā)指南>以及wicket中的demo實(shí)現(xiàn)的例子:經(jīng)典的HelloWorld(在web page輸出)
例子在Eclipse中的目錄結(jié)構(gòu)如下
├─src
│ └─wicket
│ └─examples
│ └─helloworld
└─web
├─META-INF
└─WEB-INF
├─classes
│ └─wicket
│ └─examples
│ └─helloworld
└─lib
在helloworld包中定義了3個文件
1) HelloWorld.java
2) HelloWorldApplication.java
3) helloWorld.html(注意這里小寫的h)
二、web配置
web.xml主要配置如下
三、運(yùn)行l(wèi)ocalhost/mywick/helloworld/
運(yùn)行后出現(xiàn)如下錯誤:
四、總結(jié)
大部分文章提到該錯誤主要是class和對應(yīng)的html沒有放在同一目錄,所以我疑惑了半天,我一直是放在同目錄下的
這里給大家也提醒一下,不僅要在同目錄,而且命名也是大小寫敏感的:
1.java類和html文件一定要放在一個包里(同文件夾下)
2.繼承WebPage的類如HelloWorld,則其應(yīng)對應(yīng)html應(yīng)該命名為HelloWorld.html(這個問題很難找)
五、問題
因?yàn)檫€沒有深入了解,就目前的理解程度,有些疑問.
1.繼承webPage的類命名必須要和html一致,是不是會導(dǎo)致同包目錄下文件太多,瀏覽起來很不方便,沒有將其分開的辦法?
2.所有的html都要放在WEB-INF/classes下,感覺不太符合web工程啊規(guī)則啊.其實(shí)本質(zhì)還是能否將這兩個分開的問題 :)
前臺的美工&后臺的程序員分工明確,關(guān)于更多的比較以及特點(diǎn),可以參考<Wicket開發(fā)指南>,作者已經(jīng)講的很詳細(xì)了。
這里就今天我實(shí)踐過程中遇到的問題備忘一下.
一、代碼結(jié)構(gòu)
例子很簡單,就是按照<Wicket開發(fā)指南>以及wicket中的demo實(shí)現(xiàn)的例子:經(jīng)典的HelloWorld(在web page輸出)
例子在Eclipse中的目錄結(jié)構(gòu)如下
├─src
│ └─wicket
│ └─examples
│ └─helloworld
└─web
├─META-INF
└─WEB-INF
├─classes
│ └─wicket
│ └─examples
│ └─helloworld
└─lib
在helloworld包中定義了3個文件
1) HelloWorld.java
2) HelloWorldApplication.java
3) helloWorld.html(注意這里小寫的h)
二、web配置
web.xml主要配置如下
<servlet>
<servlet-name>HelloWorldApplication</servlet-name>
<servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>wicket.examples.helloworld.HelloWorldApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldApplication</servlet-name>
<url-pattern>/helloworld/*</url-pattern>
</servlet-mapping>
<servlet-name>HelloWorldApplication</servlet-name>
<servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>wicket.examples.helloworld.HelloWorldApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldApplication</servlet-name>
<url-pattern>/helloworld/*</url-pattern>
</servlet-mapping>
三、運(yùn)行l(wèi)ocalhost/mywick/helloworld/
運(yùn)行后出現(xiàn)如下錯誤:
WicketMessage: Markup of type 'html' for component 'wicket.examples.helloworld.HelloWorld' not found. Enable debug messages for wicket.util.resource to get a list of all filenames tried:
[Page class = wicket.examples.helloworld.HelloWorld, id = 0]
Root cause:
wicket.markup.MarkupNotFoundException: Markup not found. Component class: wicket.examples.helloworld.HelloWorld Enable debug messages for wicket.util.resource to get a list of all filenames tried
at wicket.markup.MarkupCache.getMarkupStream(MarkupCache.java:117)
at wicket.MarkupContainer.getAssociatedMarkupStream(MarkupContainer.java:827)
at wicket.Page.onRender(Page.java:850)
at wicket.Component.render(Component.java:1526)
at wicket.Page.renderPage(Page.java:408)
at wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:226)
at wicket.request.compound.DefaultResponseStrategy.respond(DefaultResponseStrategy.java:49)
at wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(AbstractCompoundRequestCycleProcessor.java:66)
at wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java:902)
at wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:929)
at wicket.RequestCycle.step(RequestCycle.java:1010)
at wicket.RequestCycle.steps(RequestCycle.java:1084)
at wicket.RequestCycle.request(RequestCycle.java:454)
at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:219)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
[Page class = wicket.examples.helloworld.HelloWorld, id = 0]
Root cause:
wicket.markup.MarkupNotFoundException: Markup not found. Component class: wicket.examples.helloworld.HelloWorld Enable debug messages for wicket.util.resource to get a list of all filenames tried
at wicket.markup.MarkupCache.getMarkupStream(MarkupCache.java:117)
at wicket.MarkupContainer.getAssociatedMarkupStream(MarkupContainer.java:827)
at wicket.Page.onRender(Page.java:850)
at wicket.Component.render(Component.java:1526)
at wicket.Page.renderPage(Page.java:408)
at wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:226)
at wicket.request.compound.DefaultResponseStrategy.respond(DefaultResponseStrategy.java:49)
at wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(AbstractCompoundRequestCycleProcessor.java:66)
at wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java:902)
at wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:929)
at wicket.RequestCycle.step(RequestCycle.java:1010)
at wicket.RequestCycle.steps(RequestCycle.java:1084)
at wicket.RequestCycle.request(RequestCycle.java:454)
at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:219)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
四、總結(jié)
大部分文章提到該錯誤主要是class和對應(yīng)的html沒有放在同一目錄,所以我疑惑了半天,我一直是放在同目錄下的
這里給大家也提醒一下,不僅要在同目錄,而且命名也是大小寫敏感的:
1.java類和html文件一定要放在一個包里(同文件夾下)
2.繼承WebPage的類如HelloWorld,則其應(yīng)對應(yīng)html應(yīng)該命名為HelloWorld.html(這個問題很難找)
五、問題
因?yàn)檫€沒有深入了解,就目前的理解程度,有些疑問.
1.繼承webPage的類命名必須要和html一致,是不是會導(dǎo)致同包目錄下文件太多,瀏覽起來很不方便,沒有將其分開的辦法?
2.所有的html都要放在WEB-INF/classes下,感覺不太符合web工程啊規(guī)則啊.其實(shí)本質(zhì)還是能否將這兩個分開的問題 :)
posted on 2007-08-15 11:36 想飛就飛 閱讀(1693) 評論(3) 編輯 收藏 所屬分類: J2EE