在JSF中调用另一个页面

时间:2012-12-12 22:58:20

标签: jsf

我有一个带有2个.xhtml文件的简单JSF应用程序。当我运行应用程序时,显示的第一页是welcome.xhtml:

<?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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Final Project</title>
</h:head>
<h:body bgcolor="white">
<div align="center" style="border:5px outset blue;">Welcome to the Product         Inventory     Application</div>
<br></br>
<br></br>
    <h:commandButton value="View All Products" action="allProducts"/>
</h:body>

它显示正常,但是当我按下查看所有产品按钮时,我希望它显示allProducts.xhtml facelet。但是当我点击按钮时,根本没有任何事情发生,没有例外或任何事情。 allProducts.xhtml页面只是:

<?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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>All Products</title>
</h:head>
<h:body bgcolor="white">
<h3>Test</h3>
</h:body>
</html>

2 个答案:

答案 0 :(得分:4)

问题是UICommand<h:commandButton><h:commandLink>和类似物)必须位于表格内<h:form>。将 welcome.xhtml 页面更改为:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Final Project</title>
</h:head>
<h:body bgcolor="white">
<div align="center" style="border:5px outset blue;">Welcome to the Product         Inventory     Application</div>
<br></br>
<br></br>
    <h:form>
        <h:commandButton value="View All Products" action="allProducts"/>
    </h:form>
</h:body>

更多信息:

答案 1 :(得分:1)

我不知道精确的细节,但这是一般的想法。欢迎页面上按钮的action属性是指辅助bean的'allProducts'方法。该方法必须返回字符串'allProducts.xhtml'才能让JSF显示产品页面。 因此,您必须为欢迎页面引入一个支持bean,并使用方法'allProducts'赋予该类。