window.location.href不渲染Facelets页面,返回原始源代码

时间:2013-01-24 22:27:47

标签: javascript jsf facelets

我在从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的{​​{1}}页面为:

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> 标记。在网上搜索之后,似乎我是唯一一个有这样问题的人。也许我误解了JSF的某些方面。我希望得到一些建议。

1 个答案:

答案 0 :(得分:0)

您需要确保请求网址与webapp FacesServlet中定义的web.xml的网址格式相匹配。它就是负责执行所有JSF / Facelets工作的人。

例如,如果您已将其映射到*.jsf,那么您应该在该网址模式上打开该网页,以便正确调用FacesServlet并找到index.xhtml档案并做所有必要的事情。

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

或者,您也可以将FacesServlet的网址格式更改为*.xhtml。这样您就不必担心虚拟URL。

另见: