JSF - 更改h:commandButton(2.0)的操作

时间:2010-09-27 20:50:24

标签: jsf jsf-2

我是JSF 2.0的新手。在最后一个版本中,我理解如果我想要更改关于“发送给客户端的内容”的规则,我只需要配置faces-config.xml。

现在,在2.0版本上,如何管理Action? 例如,如果我在index.xhtml

上有这个
<h:commandButton id="submit" value="submit" action="response" />

我需要调用一个名为response.html(不是xhtml)的页面或者放在/folder/response.html中的页面,还是其他的东西?怎么办?我知道JSF 2.0对这些东西非常灵活(href链接的概念被打败了)。所以我认为我可以用其他方法来管理这个,对吧?

1 个答案:

答案 0 :(得分:6)

action可以指出两件事:

  1. 方法表达式action="#{bean.methodname}",其方法如下所示:

    @ManagedBean
    @RequestScoped
    public class Bean {
        public String methodname() {
            // Do some business task here.
            return "response";
        }
    }
    

    执行该方法后,该操作将最终包含方法的返回值,如下所示:action="response"

    您还可以“动态”通常的Java方式控制结果:

    public String methodname() {
        if (someCondition) {
            return "somepage";
        } else {
            return "anotherpage";
        }
    }
    

    根据条件结果,操作最终会像action="somepage"action="anotherpage"

  2. 与当前XHTML页面在相同文件夹中的另一个XHTML页面。您只需指定文件名:action="response"

  3. 无论哪种方式,它都会转到由outcome + ".xhtml"组成的XHTML页面,其中outcome是操作值(例如response.xhtmlsomepage.xhtml或{{1} })应该与包含anotherpage.xhtml的XHTML文件位于同一文件夹中。

    您无需在h:commandButton中为此配置任何内容。以前,在JSF 1.x年龄期间,您需要为此定义faces-config.xml

    另见: