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 フェイスレットが表示されるはずです。しかし、ボタンをクリックしても何も起こらず、例外も何もありません。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および類似のもの) がフォーム内にある必要があることです。welcome.xhtmlページを次のように変更します。<h:commandButton><h:commandLink><h:form>

<!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

正確な詳細は覚えていませんが、一般的な考え方は次のとおりです。ウェルカム ページのボタンのアクション属性は、バッキング Bean の「allProducts」メソッドを参照しています。このメソッドは、JSF に製品ページを表示させるために、文字列「allProducts.xhtml」を返す必要があります。そのため、ウェルカム ページにバッキング Bean を導入し、そのクラスに「allProducts」メソッドを付与する必要があります。

于 2012-12-12T23:22:21.643 に答える