我有一个带有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>
答案 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'赋予该类。