h:form的问题 - 通过h:commandbutton提交时返回404

时间:2017-09-04 08:55:32

标签: jsf

我正在研究JSF(2.2)应用程序。我看到一些奇怪的行为使用h:form和h:commandbutton。

问题 - 我有以下代码:searchRecord.xhtml -

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

我面临的问题是,当我点击提交按钮时,它显示404页面找不到URL指向当前页面。它没有执行指定的bean动作。

我试着调试一下。当表单被翻译成HTML时,表单将通过method =&#34; post&#34;生成。行动=&#34; /MyApplication/WEB-INF/searchRecord.xhtml" (看起来是正确的行为)。仍然,点击按钮,我得到404。

任何人都可以帮我弄清问题是什么?我浪费了周末来解决这个问题但是徒劳无功。

编辑 - IDE - Eclipse JSF版本 - Mojarra 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访问我的应用程序,该servlet验证请求参数并转发到searchRecord.xhtml。

我可以看到searchRecord.xhtml。但现在当我点击时,我得到了404。

作为标准,我们需要使用servlet然后相应转发。

1 个答案:

答案 0 :(得分: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下。