我是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链接的概念被打败了)。所以我认为我可以用其他方法来管理这个,对吧?
答案 0 :(得分:6)
action
可以指出两件事:
方法表达式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"
与当前XHTML页面在相同文件夹中的另一个XHTML页面。您只需指定文件名:action="response"
。
无论哪种方式,它都会转到由outcome + ".xhtml"
组成的XHTML页面,其中outcome
是操作值(例如response.xhtml
,somepage.xhtml
或{{1} })应该与包含anotherpage.xhtml
的XHTML文件位于同一文件夹中。
您无需在h:commandButton
中为此配置任何内容。以前,在JSF 1.x年龄期间,您需要为此定义faces-config.xml
。