基于URL调用backing bean方法

时间:2013-02-26 11:48:52

标签: jsf-2

我在JSF遇到一个问题。有没有办法根据URL调用backing bean的方法?使用Struts时,我可以通过structs-config和action类来实现它。当我从Struts迁移到JSF时,我遇到了这个问题。

2 个答案:

答案 0 :(得分:4)

您可以使用PrettyFaces大大改善JSF导航。使您能够使用易于理解,可收藏的REST URL。

我使用Servlet 3.0然后你只需要将PrettyFaces jar添加到你的web应用程序中, 使用页面映射注释托管bean,并为特定映射选择操作:

import com.ocpsoft.pretty.faces.annotation.URLAction;
import com.ocpsoft.pretty.faces.annotation.URLMapping;
import com.ocpsoft.pretty.faces.annotation.URLMappings;

@ManagedBean(name = "pageViewBean")
@URLMappings(mappings = {
    @URLMapping(id = "myAction",
    pattern = "/page/myAction", // URL mapped to jsf file
    viewId = "/page.xhtml"),    // jsf file
    @URLMapping(id = "myAction2",
    pattern = "/page/myAction2", // URL mapped to jsf file
    viewId = "/page.xhtml")})    // jsf file
public class PageViewBean
{

    @URLAction(mappingId = "myAction") // action for URL /page/myAction
    public void myAction()
    {
        ...
    }


    @URLAction(mappingId = "myAction2") // action for URL /page/myAction2
    public void myAction2()
    {
        ...
    }

多数人。

答案 1 :(得分:2)

您可以使用<f:event type="preRenderView" />,每次呈现您的网页时都会调用它,将其放在<h:head>标记

上方

例如:

<f:event listener="#{myBean.myAction}" type="preRenderView" />
<h:head>
...
</h:head>
<h:body>
...

在你的bean中:

public void myAction(ComponentSystemEvent event){
    ...
}