1

我在从 Javascript 加载 Facelets 页面时遇到问题。我正在使用 Netbeans 7.2、Glassfish 3.1.2 和 Java EE 6。

我做了一个简单的测试页面:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <script type="text/javascript">
        window.location.href = "index.xhtml";
    </script>
    <title>winq match!</title>
</h:head>
<h:body>
    <h1>WING MATCH!!</h1>
    <h:form>
        <h:commandButton id="Next" value="weiter" action="index"/> 
    </h:form>
</h:body>

index.xhtml应该加载的页面window.location.href是:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core">
<h:head>
    <title>Facelet Title</title>
</h:head>
<h:body>
    <h:form>
        <h:outputText value="TestTestTestTestTest"/>
        msg <h:inputText id="ema" value="#{testBean.inputValue}" maxlength="1" />      
        <h:commandButton id="but" value="Submit" action="index"/>
    </h:form>
</h:body>

页面已加载但未解析,因此h:浏览器不会解释标签。在网上搜索后,似乎我是唯一一个遇到这种问题的人。也许我误解了 JSF 的某些方面。我希望能得到一些建议。

4

1 回答 1

0

您需要确保请求 URL 与FacesServletwebapp 中定义的 URL 模式匹配web.xml。它就是负责执行所有 JSF/Facelets 工作的人。

例如,如果您已将其映射到*.jsf,那么您应该在该 URL 模式上打开页面,以便FacesServlet正确调用并定位index.xhtml文件并执行所有必要的操作。

window.location.href = "index.jsf";

或者,您也可以将 的 URL 模式更改FacesServlet*.xhtml。这样您就无需担心虚拟 URL。

也可以看看:

于 2013-01-25T02:35:28.423 回答