2017-09-04 66 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下。