2013-02-26 113 views
4

我在JSF中遇到了一個問題。有什麼方法可以根據URL調用backing bean的方法嗎?在使用Struts時,我可以通過structs-config和action class來實現。當我從Struts遷移到JSF時,我正面臨着這個問題。基於URL調用backing bean方法

+0

這將幫助您:http://balusc.blogspot.in/2011/09/communication-in-jsf-20.html – 757071 2013-02-26 11:50:33

回答

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() 
    { 
     ... 
    } 

這就是所有。

+0

感謝您的回覆。 – 2013-02-26 12:48:28

+0

PrettyFaces是一款出色的工具,我們將它與PrimeFaces一起使用,它已經解決了許多架構問題。 – 2013-10-04 18:40:33

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){ 
    ... 
} 
+0

感謝您的回覆 – 2013-02-26 14:12:45

相關問題