0

私の現在のコード。

<h:form>
   <h:panelGroup id="messagePanel" layout="block">
       <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
   </h:panelGroup>
    <h:panelGrid columns="2">

        // some form input stuff here..

    </h:panelGrid>         

   <h:commandButton class="register-btn" action="#{accountController.create}" value="#{bundle.Register}">
        <f:ajax event="action" execute="@form" render="messagePanel"/>
   </h:commandButton>                       
</h:form>

messagePanelは、検証エラーが表示される場所です。

成功イベントをキャプチャする方法を知りたいです。

[完了]ユーザーが誤った値を入力すると、ajax検証が行われ、誤った値が表示されます

[問題]成功した場合は、別のページにリダイレクトする必要があります。

**更新しました

createメソッド

public String create() {
        try {

            getFacadeUser().create(currentUser);

            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("AccountCreated"));
            return prepareCreate();
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
            return null;
        }
    }

public String prepareCreate() {
    current = new Account();
    selectedItemIndex = -1;
    return "index";
}

JSF2.1を使用しています

4

1 に答える 1

0

これは、AJAX リクエストでリダイレクトを行う正しい方法ではありません。代わりにExternalContext.redirect()を使用する必要があります。

FacesContext.getCurrentInstance().getExternalContext().redirect("yourUrl");

そのようにして、リダイレクトを行うサーバーから部分的な応答を受け取ります。

<partial-response>
  <redirect url="yourUrl">
  </redirect>
</partial-response>

このメソッドで返された文字列は無関係ですnull

于 2013-02-11T10:19:53.497 に答える