无法从浏览器加载 WEB-INF

Cannot load WEB-INF from browser

我开始使用 primefaces 和 spring 集成测试我的应用程序,但我停止在 p:commandButton 组件上。当我点击它时,我想显示 p:growl 弹出组件,如 GIT 中的 here, but unfortunately page is redirect to view in location /WEB-INF/WEB-INF/intro.xhtml (but view is located in /WEB-INF/intro.xhtml) with error of 'resource not found'. May be some one know the problem? I download some example project,然后遇到同样的问题。我在

中更改了一些视图代码

/springmvcfacelets/src/main/webapp/templates/maintemplate.xhtml

并粘贴来自 primefaces 的代码

<h:form>
<p:growl id="growl" life="2000" />

<p:commandButton value="Ajax Submit" id="ajax" update="growl" actionListener="#{buttonView.buttonAction}" styleClass="ui-priority-primary" />

<p:commandButton value="Non-Ajax Submit" id="nonAjax" actionListener="#{buttonView.buttonAction}" ajax="false" />

<p:commandButton value="With Icon" id="withIcon" actionListener="#{buttonView.buttonAction}" update="growl" icon="ui-icon-disk" />

<p:commandButton actionListener="#{buttonView.buttonAction}" id="iconOnly" update="growl" icon="ui-icon-disk" title="Icon Only" />

<p:commandButton value="Disabled" id="disabled" disabled="true" />

到body可见。还添加并注册了 Bean。 查看代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:h="http://java.sun.com/jsf/html"
 xmlns:f="http://java.sun.com/jsf/core"
 xmlns:c="http://java.sun.com/jsp/jstl/core"
 xmlns:ui="http://java.sun.com/jsf/facelets"
 xmlns:p="http://primefaces.org/ui">

<h:head>
 <title><ui:insert name="title">Default title</ui:insert></title>
</h:head>

<h:body>
 <h:form>
  <p:panel id="panel" header="New User">
   <h:form>
    <p:growl id="growl" life="2000" />

    <p:commandButton value="Ajax Submit" id="ajax" update="growl"
     actionListener="#{buttonView.buttonAction}"
     styleClass="ui-priority-primary" />

    <p:commandButton value="Non-Ajax Submit" id="nonAjax"
     actionListener="#{buttonView.buttonAction}" ajax="false" />

    <p:commandButton value="With Icon" id="withIcon"
     actionListener="#{buttonView.buttonAction}" update="growl"
     icon="ui-icon-disk" />

    <p:commandButton actionListener="#{buttonView.buttonAction}"
     id="iconOnly" update="growl" icon="ui-icon-disk" title="Icon Only" />

    <p:commandButton value="Disabled" id="disabled" disabled="true" />
   </h:form>
  </p:panel>
 </h:form>
</h:body>
</html>

这与 primefaces 和命令按钮组件无关。 您根本无法使用浏览器访问位于 WEB-INF 目录中的文件。这将是安全漏洞。 Web-Inf 适用于使用 <ui:include>(例如)加载集成模板或存储您的配置(faces-config.xmlweb.xmlapp-context.xml ...)。

将您的文件移动到除 web-inf 之外的任何其他 webapp 目录并更改提交结果(页面所在的位置,来自表单操作或来自 bean)并让我们知道结果。

问题出在web.xml(缺少适合 JSF 的路径)文件和视图代码中。