2

これはプロにとって簡単なはずです:

JSF / Facelets / Seamを使用していて、ラジオボタンを表示しようとしています。次に、ユーザーがボタンの1つをクリックした後、値を保存し、ユーザーはすぐに別のページにリダイレクトする必要があります(つまり、送信ボタンをクリックする必要はありません)。

ラジオボタンは機能しますが、転送は機能しません。

ありがとう

4

2 に答える 2

5

実際、Richfaces を使用してa4j:support コンポーネントを追加できます。

<h:selectOneRadio value="#{myBean.myValue}" ...>
    ...
    <a4j:support event="onclick" action="#{myBean.doSomething}"/>
</h:selectOneRadio>

Java コードで:

public String doSomething() {
    // Your code goes here...
    ...
    // Now, we move to the new page.
    return "some-outcome";
}

ただし、新しいライブラリを追加できない (または追加したくない) 場合は、古い方法でこれを行うことができます。

<h:selectOneRadio value="#{myBean.myValue}" ... onclick="this.form.submit();" valueChangeListener="#{myBean.doSomething}">
    ...
</h:selectOneRadio>

このコードは、onclick Javascript イベントが検出されると、ラジオ ボタンが含まれるフォームを送信します。サーバー側では、アクション doSomething が実行されます。このメソッドでは、実行するナビゲーション ルールを作成できます。

public void doSomething(ValueChangeEvent evt) {
    // Your code goes here...
    ...
    // Now, we move to another page...
    FacesContext context = FacesContext.getCurrentInstance();
    NavigationHandler navigation = context.getApplication().getNavigationHandler();
    navigation.handleNavigation(context, "", "some-outcome");
}

some-outcome は、faces-config.xml のナビゲーション ルールで定義された結果です。

于 2009-01-27T07:25:33.153 に答える
1

JSF 2.0 を使用すると、次のことができます。

<h:selectOneRadio ...
...
    <f:ajax event="change" render="@form" />
</h:selectOneRadio>
于 2012-05-11T15:15:49.437 に答える