2011-05-21 47 views
-2

我已經徹底搜索了這個主題,並打開了log4j的調試級別,但MenuContextListener根本無法啓動。這裏是我的信息有:在Struts 2.x中使用Struts-Menu - MenuContextListener不工作

我的web.xml文件

<listener> 
    <listener-class>net.sf.navigator.menu.MenuContextListener</listener-class> 
</listener> 

<context-param> 
    <param-name>menuConfigLocation</param-name> 
    <param-value>/WEB-INF/classes/menu-config.xml</param-value> 
</context-param> 

我的menu-config.xml文件

<?xml version="1.0" encoding="UTF-8" ?> 

<MenuConfig> 

<Displayers> 
    <Displayer name="TabbedMenu" type="net.sf.navigator.displayer.TabbedMenuDisplayer" /> 
</Displayers> 

<Menus> 
    <Menu name="selectAction" title="Select Action" location="SelectAction"> 
     <Item name="report" title="Report" location="Report"/> 
     <Item name="query" title="Query" location="Query"/> 
     <Item name="listings" title="Listings" location="Listings"/> 
    </Menu> 
</Menus> 

</MenuConfig> 

我log4j的信息

May 21, 2011 1:02:33 PM org.apache.catalina.startup.HostConfig deployWAR 
INFO: Deploying web application archive myproject.war 
context path = /myproject 
log4j:ERROR Could not find value for key log4j.appender.R 
log4j:ERROR Could not instantiate appender named "R". 
log4j:ERROR Could not find value for key log4j.appender.TX 
log4j:ERROR Could not instantiate appender named "TX". 
log4j:ERROR Could not find value for key log4j.appender.R 
log4j:ERROR Could not instantiate appender named "R". 
log4j:ERROR Could not find value for key log4j.appender.R 
log4j:ERROR Could not instantiate appender named "R". 
log4j:ERROR Could not find value for key log4j.appender.R 
log4j:ERROR Could not instantiate appender named "R". 
log4j:ERROR Could not find value for key log4j.appender.R 
log4j:ERROR Could not instantiate appender named "R". 
log4j:ERROR Could not find value for key log4j.appender.R 
log4j:ERROR Could not instantiate appender named "R". 
log4j:ERROR Could not find value for key log4j.appender.R 
log4j:ERROR Could not instantiate appender named "R". 
log4j:ERROR Could not find value for key log4j.appender.R 
log4j:ERROR Could not instantiate appender named "R". 
log4j:ERROR Could not find value for key log4j.appender.R 
log4j:ERROR Could not instantiate appender named "R". 
2011-05-21 13:02:52 MenuContextListener [DEBUG] Starting struts-menu initialization 
2011-05-21 13:02:52 MenuContextListener [DEBUG] using menuConfigLocation: /WEBINF/classes/menu-config.xml 
May 21, 2011 1:02:52 PM org.apache.catalina.core.StandardContext start 
SEVERE: Error listenerStart 
May 21, 2011 1:02:52 PM org.apache.catalina.core.StandardContext start 
SEVERE: Context [/myproject] startup failed due to previous errors 
2011-05-21 13:02:52 MenuContextListener [DEBUG] destroying struts-menu... 
May 21, 2011 1:02:52 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory docs 
context path = /docs 
May 21, 2011 1:02:52 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory examples 
context path = /examples 
May 21, 2011 1:02:53 PM org.apache.coyote.http11.Http11AprProtocol start 
INFO: Starting Coyote HTTP/1.1 on http-8080 
May 21, 2011 1:02:53 PM org.apache.coyote.ajp.AjpAprProtocol start 
INFO: Starting Coyote AJP/1.3 on ajp-8009 
May 21, 2011 1:02:53 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 35104 ms 

所以你看爲此偵聽器調用contextInitialize,但該方法未完成,因爲Menu內應該有1個更多的日誌語句ContextListener告訴我們成功或失敗。然後我們突然得到contextDestroyed調用,就是這樣。

回答

1

所以絕對沒有任何日誌給我提供任何更多的信息。無處!我所做的發現問題是我不得不精心梳理struts-main的源代碼。我發現了什麼?在MenuRepository.java中有一個公共消化器的導入。下議院沼氣池?這在任何文檔中提及或包含在任何下載中?我不使用普通消化器。

這是我的承諾,任何人如果我錯了或請確認這是否正確,請糾正我。在寫這篇文章的時候回到struts 1.x中,commons-digester是struts包的一部分,所以爲什麼在struts-menu文檔中提到commons-digester?現在不再是這種情況,所以必須單獨下載公共消化器。所以我的結論是,需要有文檔來說明如何將這個包與struts 2.x成功結合起來。

另外,任何人都可以給我任何2011年替代使用struts的菜單嗎?當用戶將鼠標懸停在右側時,我會看到一個向右打開的菜單。這與struts-menu中包含的Velocity CoolWindows示例非常相似。

+0

您發佈的原始控制檯輸出顯示log4j問題,這顯然是掩蓋了消化器問題的原因。你應該開始一個關於struts-menu替代品的新問題。 – 2011-05-22 22:06:00