2017-09-04 74 views
0

我正在JSF(2.2)應用程序上工作。我看到一些奇怪的行爲與h:form和h:commandbutton一起工作。問題與h:表單 - 通過h提交時返回404:commandbutton

問題 -我在說searchRecord.xhtml下面的代碼 -

<h:form> 
    <!-- Input fields --> 
    <h:commandbutton type="submit" value="Search" title="Search" action="#{bean.search}"/> 
</h:form> 

的問題,我面對的是當我點擊提交按鈕,就說明不是URL指向當前發現的404頁頁。它沒有執行指定的bean操作。

我試圖調試這個。當表單被轉換爲HTML時,表單將通過method =「post」action =「/ MyApplication/WEB-INF/searchRecord.xhtml」(看起來是正確的行爲)生成。儘管如此,點擊按鈕,我越來越404。

任何人都可以請幫助我搞清楚是什麼問題?我浪費了我的週末計算出來,但徒勞無益。

編輯 - IDE - Eclipse的 JSF版本 - 鑽嘴魚科2.2.8我的項目 目錄結構 -

項目

- Java Resource 
----src -> contains java files 
- WebContent 
---- META-INF 
---- WEB-INF 
------facelets -> contains *.xhtml files 
------resources -> contains img, css and JS files in respective folders 
------commonLayout.xhtml 
- index.xhtml 

我訪問使用launchHandler的servlet這驗證我的應用程序請求參數並轉發到searchRecord.xhtml。

我能夠看到searchRecord.xhtml。但現在當我點擊,我越來越404.

作爲一個標準,我們需要使用servlet,然後相應地轉發。

+0

什麼是寫在你的bean.search方法? faces-config.xml中定義的導航規則是否正確? – AswathyPrasad

+0

'type =「submit」'是多餘的......(如果我沒有記錯的話,它甚至可能會導致問題) – Kukeltje

+0

*「這看起來是正確的行爲」*不,它不是。嘗試在瀏覽器的地址欄中輸入該網址。嘗試以這種方式訪問​​任何/ WEB-INF文件。包括web.xml。你會發現這是不可能的。並非沒有理由。 – BalusC

回答

1

我發現我的問題的解決方案。這裏的問題是錯誤的目錄結構(不知何故,我錯過了/ WEB-INF下的資源無法通過URL訪問的問題,感謝@BalusC指出了這一點!!!)。基於上後下的答案 -

JSF files inside WEB-INF directory, how do I access them?

Which XHTML files do I need to put in /WEB-INF and which not?

我改組我的項目如下 -

My Application 
|- Java Resource 
|----src -> contains java files 
|- WebContent 
|---- META-INF 
|---- Resources -> contains img, css and JS files in respective folders 
|---- JSF 
|  |--Contains client .xhtml files 
|---- WEB-INF 
|  |--template -> contains the master templates for my application 
|  |--web.xml 
|---- index.xhtml 

現在預期並顯示所有網頁的導航正在發生的事情。

我也打算使用JSF 2.2配置參數並將資源放在WEB-INF下。