2

我有一个带有 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>
4

2 回答 2

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>

更多信息:

于 2012-12-13T00:16:07.570 回答
1

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

于 2012-12-12T23:22:21.643 回答