2012-01-16 63 views
0

我安裝了Weblogic 10.3.5。我在服務器上部署了JSF 2.0戰爭。在我的WebContent文件夾中,我有* .xhtml和* .jsp文件,它們分別包含JSF2.0 xhtml和純JSP代碼。當我導航到http://localhost:7001/MyApp/NewFile123.xhtml時,出現404 Not found錯誤頁面。 (在Eclipse控制檯上沒有任何信息)。但http://localhost:7001/MyApp/NewFile.jsp運作良好,並做它應該做的。JSF2.0 - * .xhtml頁面給404-NotFound但是* .jsp工作正常嗎?

我不混合JSF和JSP,但只是想看看JSP是否會工作。我有適合XHTML文件的servlet映射。

我也有這些對我的類路徑:

  • glassfish.el_1.0.0.0_2-2.jar

  • glassfish.jsf_1.0.0.0_2-1-5.jar

  • glassfish.jstl_1.2.0.2.jar

  • javax.servlet_1.0.0.0_2-5.jar

另一個有趣的事情是,當我嘗試編輯* .xhtml文件時,自動完成不起作用。 (即它不會自動完成<h:outp它曾經我用的Weblogic 12.1 JSF2.0具有開箱時

編輯:。這裏是web.xml中的相關部分

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 

那麼,爲什麼我收到了404當我嘗試導航到JSF頁面的任何建議

+0

您是如何配置web.xml以指向Faces Servlet的? – 2012-01-16 10:02:00

+0

@TheEliteGentleman - 請參閱有關問題的編輯。 – 2012-01-16 11:54:05

+0

什麼編輯?我沒有看到你編輯任何東西的地方。 – 2012-01-16 11:55:25

回答

1

我也有這些對我的類路徑:??

  • glassfish.el_1.0.0.0_2-2.jar
  • glassfish.jsf_1.0.0.0_2-1-5.jar
  • glassfish.jstl_1.2.0.2.jar
  • javax.servlet_1.0.0。 0_2-5.jar

/WEB-INF/lib刪除所有這些特定容器庫。他們根本不屬於那裏,集裝箱已經和他們一起出貨了。您的/WEB-INF/lib應該只包含未與容器一起提供的特定於webapp的庫。

您的問題很可能是由於Weblogic 1.0.3.5是一個已經與JSF 2.0一起提供的Servlet 2.5容器,但是您提供了需要Servlet 3.0的JSF 2.1庫的事實。我沒有使用Weblogic,但我讀過1.0.3.x需要一些特定的步驟才能使JSF 2.0正常工作,另請參閱this blog。以下是相關的摘錄:

  • 下載並安裝從OTN最新Oracle WebLogic Server 11g Rel 1 (10.3.3) Installers之一。 (給ZIP安裝程序一個嘗試。Aweseome輕量級!)
  • 創建一個新的樣本域(叫它任何你想要的),並開始管理服務器
  • 打開管理控制檯(HTTP://本地主機:7001 /控制檯/)
  • 部署JSF 2.0庫(部署 - 安裝 - wlserver_10.3 \ COMMON \部署的庫\ JSF-2.0.war
  • 找到自己喜歡的JSF 2.0樣本(我會好好guessNumber東西從鑽嘴魚科-2.0.2分佈)
  • 添加weblogic.xml文件到以下內容的WEB-INF /文件夾:

    <?xml version="1.0" encoding="UTF-8"?> 
    <weblogic-web-app> 
        <library-ref> 
        <library-name>jsf</library-name> 
        <specification-version>2.0</specification-version> 
        <implementation-version>1.0.0.0_2-0-2</implementation-version> 
        <exact-match>true</exact-match> 
        </library-ref> 
    </weblogic-web-app> 
    

更新按照評論:

我現在懷疑這可能是因爲該項目的設置。我創建了一個動態Web項目並選擇了JSF 1.2。在下一步,它向我詢問了JSF規範和實現,並將他指向了那些glassfish jsf2 jar。默認值是1.2。也許我不應該那樣做?

這可能會生成一個JSF 1.2兼容faces-config.xml,它將強制JSF 2.0在JSF 1.2 modus中運行。您需要重新聲明<faces-config>根聲明以符合JSF 2.0。

<faces-config 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
    version="2.0"> 
+0

BalusC,謝謝你的回答。我在那個博客上提到了完全相同的東西來完成這一切。我從'/ WEB-INF/lib'中刪除了jar。我部署了JSF 2.0庫,並按提取說的那樣更改了我的'weblogic.xml'。但是,我仍然沒有在* .xhtml頁面找到404,但沒有運氣。有趣的是,我的過濾器,servlet和JSP工作得很好。 – 2012-01-16 12:20:34

+0

嘗試使用其他網址格式。例如。 '* .jsf'或'/ faces/*'而不是'* .xhtml'。 – BalusC 2012-01-16 12:21:11

+0

我現在懷疑這可能是因爲項目設置。我創建了一個動態Web項目並選擇了JSF 1.2。在下一步,它向我詢問了JSF規範和實現,並將他指向了那些glassfish jsf2 jar。默認值是1.2。也許我不應該那樣做? – 2012-01-16 12:23:13

相關問題