0

私は次の設定をしています:

  • public String getResult()を返すメソッドを含む testBean.java"success"

  • test.xhtml

    <h:commandLink action="#{testBean.result}" value="testlink" />
    
  • faces-config.xml内の次のナビゲーション ルール:

    <navigation-rule>
    <from-view-id>/views/test.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>success</from-outcome>
        <to-view-id>/views/nextpage.xhtml</to-view-id>
        <redirect />
    </navigation-case>
    

action 属性 (works) に直接「success」を入れるだけで、ナビゲーションが一般的に機能することを確認しました。また、出力テキストとして印刷testBean.resultすると、「成功」が正しく表示されます。

ただし、リンクをクリックすると、「サーバー内部エラー」が発生し、ページのリロードのみが許可されます。ログには、次のテキストを含む javax.el.MethodNotFoundException が表示されます。

Method not found: com.company.project.view.TestBean@81de8.result()

謎の @81de8 がどこから来たのか、私は混乱しています。これが問題の原因でしょうか。他の場所での不一致の兆候なのか、それとも完全に正常な舞台裏の魔法なのか? outputText では失敗しないのに、commandLink 内での呼び出しが失敗する理由を誰でも理解できますか? または、チェックしてテストする必要がある他のことを教えてください。

前もって感謝します、 ルイーズ

編集: Java メソッドの名前は getResult (結果ではない) で、エラー コードはメソッドの結果 (文字列ではない) を指しています。これらは、長い一日の仕事の終わりに質問したために、質問を書き間違えたものです ;) 申し訳ありません。

4

1 に答える 1

3

実行していると思われるコードを実行していません。

あなたは宣言したと言った

action="#{testBean.result}"

ただし、例外として、実際に実行中のコードには

action="#{testBean.string}"

おそらく、以前の試行の残り物であるか、間違ったページを開いたのでしょうか? 検証、クリーンアップ、再構築、および再デプロイすると、この問題は解消されます。


謎の@81de8がどこから来たのか混乱しています

クラスのインスタンスの単なるハッシュコードです。Object#toString()javadocも参照してください。すると、同じ文字列形式が表示されます

System.out.println(new TestBean());
于 2012-08-08T18:52:10.943 に答える