2011-11-09 7 views
0

私はJSF 1.2/Seam 2.2.2アプリケーションを持っています。私はボタンがあり、ボタンをクリックすると、現在のページ内のオブジェクトに対してバリデーションを実行し、いくつかの依存オブジェクトを照会し、検証を実行します。検証に合格したら、ユーザーを新しいページにリダイレクトする必要があります。それ以外の場合は、同じページに検証エラーを表示する必要があります。以下のコードは正常に動作し、エラーメッセージが表示されます。しかし、私はどのように新しいページにリダイレクトするのですか?JSF/Seam新しいページを検証してリダイレクト

<h:messages id="errorMsg" errorClass="errorMessages" /> 
<a4j:commandButton action="#{myController.shouldRedirectToNewPage()}" 
       value="Button" styleClass="button" /> 

public void shouldRedirectToNewPage() { 
    //Run validation on objects in the current page 
    //Query for dependent objects and run validation 
    if(validationFails) { 
     facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, 
      "ERROR MESSAGE", null)); 
     return; 
    } 
} 

答えて

3

どちらか使用ExternalContext#redirect()

public void shouldRedirectToNewPage() throws IOException { 
    // ... 

    if (validationFails) { 
     facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR MESSAGE", null)); 
    } else { 
     facesContext.getExternalContext().redirect("otherpage.jsf"); 
    } 
} 

またはナビゲーション・ケースの文字列通常の方法を返す:faces-config.xmlに以下と

public String shouldRedirectToNewPage() { 
    // ... 

    if (validationFails) { 
     facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR MESSAGE", null)); 
     return null; 
    } else { 
     return "otherpage"; 
    } 
} 

を:

を210
<navigation-case> 
    <from-outcome>otherpage</from-outcome> 
    <to-view-id>/otherpage.jsf</to-view-id> 
    <redirect/> 
</navigation-case> 

アクションメソッドの内部で検証を行って、具体的な問題へ


無関係必ずしもされていません(<redirect/>に注意してくださいが、これは前方に代わりに(デフォルトのリダイレクト)を行います)ベストプラクティスそれはValidatorで行う必要があります。 ValidatorExceptionがスローされた場合、アクションメソッドは単に呼び出されません。

+0

+1 –

+0

の点では、エラーメッセージが表示されるようにh:commandLinkまたはh:commandButtonを使用する必要があります。私はリダイレクトするためにStringアプローチを疲れました。しかし、other.xhtmlのinitメソッドは呼び出されません。 <ルールであれば、結果= "OTHER_PAGE"> <ページログイン-必要= "真" のview-id = "/ otherpage.xhtml"><ビュー-ID = "/ otherpage.xhtml" /リダイレクト>を user238021

関連する問題