我在JSF遇到一个问题。有没有办法根据URL调用backing bean的方法?使用Struts时,我可以通过structs-config
和action类来实现它。当我从Struts迁移到JSF时,我遇到了这个问题。
答案 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){
...
}