2

这对专业人士来说应该很容易:

我正在使用 JSF/Facelets/Seam 并尝试显示单选按钮。然后,在用户单击其中一个按钮后,应保存该值并且用户立即重定向到另一个页面(即无需单击提交按钮)。

单选按钮有效,但转发无效。

谢谢

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 回答