新的.xhtml页面不会呈现任何 jsf 标签,但以前创建的页面在同一项目中仍然可以正常工作



我有一个非常奇怪和愚蠢的问题,已经停止了。我有许多使用表单的xhtml页面,它们都工作得很好。我创建了一个名为registerUser.xhtml的新xhtml页面。我通过右键单击"Web pages"文件夹并选择new> xhtml page来创建它,就像我对其他六个页面所做的那样。我输入了我的代码,当我在web浏览器中查看页面时,它什么也没有显示。如果我查看源代码,它显示的是JSF标签,而不是html。如果我把任何代码或纯文本放在表单标签之外,它就会显示出来,这是表单标签的东西。即使我把一个正常工作的页面复制到这个新页面,它仍然不起作用。

我注意到一件事,

通常当我第一次在页面中创建c:, h:或f:标记时,我得到一个错误说它没有绑定,然后我点击它并按alt-enter,它给了我添加一些东西的选项,这将xlmns:h添加到html标记中。我不完全理解它是如何工作的,但它与名称空间有关…不管怎样,不管什么原因,这个选项没有出现……出现的唯一选项是"删除周围的标签",这显然不能解决我的问题,如果我实际上点击它。

所以没什么大不了的,它不会自动添加xmlns,我可以自己添加,复制我在另一个页面上的内容…但还是没有。为什么这行不通呢?

我试着在这个项目中创建了许多新的xhtml文件,结果是相同的表单元素,里面什么都没有呈现,它显示了错误。

所有我以前的页面工作正常。我在互联网上读到关于更改WEB-INF文件,但这没有意义,因为我已经存在的页面工作,它只是新的页面,最近没有任何变化,我知道。

我还应该指出,我在index.xhtml文件的项目窗口中右键复制/粘贴,工作完全正常,然后当我运行项目时,index.xhtml加载良好,但当我手动导航到index_1.xhtml(这是粘贴的版本)时,JSF没有呈现。

registerUser.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <head>
        <title>Jadestar's PC Solutions</title>
    </head>
    <body>
        <h:form>
            <h:panelGrid>
            <h:outputLabel value="Username: " style="font-weight:bold" />
            <h:inputText value="#{CustomBuild.username}" />
            <br></br>
            <h:outputLabel value="Password: " style="font-weight:bold" />
            <h:inputSecret value="#{CustomBuild.password}" />
            <br></br>
            <h:outputLabel value="Name: " style="font-weight:bold" />
            <h:inputText value="#{CustomBuild.name}" />
            <br></br>
            <h:outputLabel value="Address " style="font-weight:bold" />
            <h:inputText value="#{CustomBuild.address}" />
            <br></br>
            <h:outputLabel value="Phone Number: " style="font-weight:bold" />
            <h:inputText value="#{CustomBuild.phone}" />
            <br></br>
            <h:outputLabel value="Email Address: " style="font-weight:bold" />
            <h:inputText value="#{CustomBuild.email}" />
            <br></br>
            </h:panelGrid>
            <h:commandButton id="register" value="Reigster" action="#{CustomBuild.registerUser()}"/>
        </h:form>
        <br></br>
        <h:form>
            <h:commandButton id="cancel" value="Cancel" action="index" />
        </h:form>
    </body>
</html>

因此,在复制和创建大量新项目并做了大量研究之后,我发现如果我创建一个新的web项目,index.xhtml页面也可以正常工作,但在该项目中创建的任何新页面也无法呈现JSF标签。我终于找到了问题所在。在我的WEB-INF目录下的web.xml中,我缺少了以下一行:

    <url-pattern>*.xhtml</url-pattern>

在标签内。

所以通过添加这个,突然我的新jsf页面现在工作…但我的问题是,如果没有这个标签,我的当前页面如何工作,而不是新的页面?这没有意义。

缓存的问题?启用控制台在chrome和"空缓存和硬重载",仍然是相同的结果,所以它不能缓存,可以吗?

我应该提到,在这个项目进行到一半的时候,我从Netbeans 7.x进行了更新。x, Java 7。x和Glassfish 3。到Netbeans 8、Java 8和GlassFish 4。由于升级后所有内容仍与我当前的页面一起工作,我认为这不是原因,但也许有什么东西在那里坏了?

如果有人能解释一下或者有类似的问题,那就太好了

相关内容

最新更新