【问题标题】:Issue with h:form - Returning 404 when submitting through h:commandbuttonh:form 问题 - 通过 h:commandbutton 提交时返回 404
【发布时间】:2018-02-12 11:38:58
【问题描述】:

我正在开发一个 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-page not found 并且 URL 指向当前页面。它没有执行指定的 bean 操作。

我试图调试这个。当表单被翻译成 HTML 时,表单会使用 method="post" action="/MyApplication/WEB-INF/searchRecord.xhtml" 生成(这看起来是正确的行为)。不过,在单击按钮时,我得到了 404。

谁能帮我找出问题所在?我浪费了我的周末来解决这个问题,但徒劳无功。

编辑 - IDE - 日食 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,然后进行相应的转发。

【问题讨论】:

  • 你的 bean.search 方法中写了什么? faces-config.xml 中定义的导航规则是否正确?
  • type="submit" 是多余的……(如果我没记错的话,有时甚至会引起问题)
  • “这看起来是正确的行为” 不,不是。尝试在浏览器的地址栏中输入该 URL。尝试以这种方式访问​​任何 /WEB-INF 文件。包括 web.xml。你会发现这是不可能的。并非没有理由。
  • @EAP - bean.search 方法正在返回基于用户输入的结果(字符串)。高级实现是如果用户参数有效并且在数据库中找到一行则返回成功,如果用户参数无效则返回错误。根据结果​​,导航到下一页。
  • @BalusC - 是的,它是正确的。我无法访问 /WEB-INF 中的任何资源。你能指出我做错了什么吗?附言- 由于工作场所的限制,我无法在此处发布整个代码。为它道歉!

标签: jsf


【解决方案1】:

我找到了解决问题的方法。这里的问题是错误的目录结构(不知何故,我错过了 URL 无法访问 /WEB-INF 下的资源这一点。感谢@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下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2012-04-16
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    相关资源
    最近更新 更多