0

generateLicense という Bean メソッドを呼び出す jsf ボタンがあります。この Bean メソッドは、次のように、リダイレクトを実行するための文字列を返します

"/licenseGenerated.xhtml?faces-redirect=true"

このメソッドは、ユーザーの入力に基づいていくつかのバックエンド呼び出しを行うことになっています。これは、エラー処理を追加する必要があることを意味します。これが私が必要とする動作です。

ユーザーはアプリケーションにアクセスし、main.xhtml ページにいます。ユーザーは値を入力してボタンをクリックします。手順全体が正しく機能する場合、ユーザーは /licenseGenerated.xhtml ページにリダイレクトされます。それ以外の場合、エラーが発生した場合に備えて、リダイレクトは必要ありません。必要なのは、main.xhtml ページにエラー メッセージを含む jsf コンポーネントをレンダリングすることです。

では、エラーが発生した場合、generateLicense メソッドは何を返す必要があり、ボタンの jsf コードはどのようになるでしょうか?

助けてくれてありがとう!

-編集-

エラーは、Bean のメソッドの実行中に検出されます。これは、レスト サービスからの応答に基づいています。簡単に言うと、このサービスから得られる結果は 2 つあります。リダイレクトが必要な場合は 200 (OK)、ユーザーの入力が間違っている場合は 400 (NOT FOUND)。したがって、Java メソッドは次のようになります。

public String generateLicenseFile(){
   String response = ""; 
   ... // all the back-end computations
   if(response == "200"){
       return "/licenseGenerated.xhtml?faces-redirect=true";
   }else{
       //ERROR HANDLING. 
   }
}

これはボタンの現在のコードです。

<h:commandButton value="Generate License File" action="#{agreement.generateLicenseFile}" /> 
4

1 に答える 1

1

顔のメッセージを追加して返すだけnullです。

} else {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(
        FacesMessage.SEVERITY_ERROR, "Sorry, generating license file has failed. Please try again later.", null));
    return null;
}

FacesContext#addMessage()クライアント ID を呼び出すと、いわゆるnullグローバル メッセージになり<h:messages>、次のようにフィルターで除外できます。

<h:messages globalOnly="true" />

戻るnullと、このアクションが呼び出された場所と同じビューに戻ります。


具体的な問題とはif (response == "200")関係ありませんが、 はあなたが思っていることを実際には行いません。基本的な Java の学習にもう少し時間を費やすことをお勧めします。

于 2013-08-20T15:52:02.787 に答える