我正在研究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然后相应转发。
答案 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下。