【问题标题】:selectOneRadio with action immediately after clickselectOneRadio 在单击后立即执行操作
【发布时间】:2009-01-26 19:12:40
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: java jsf seam


    【解决方案1】:

    您确实可以使用 Richfaces 添加a4j:support component

    <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 中的导航规则中定义的结果。

    【讨论】:

      【解决方案2】:

      使用 JSF 2.0,您可以执行以下操作

      <h:selectOneRadio ...
      ...
          <f:ajax event="change" render="@form" />
      </h:selectOneRadio>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-22
        • 1970-01-01
        • 2014-01-06
        • 1970-01-01
        • 2015-11-03
        • 1970-01-01
        • 2012-01-12
        • 1970-01-01
        相关资源
        最近更新 更多