JSFbean生命周期-如何存储请求属性
因此,我有以下jsf页面(工作): My faces-config.xml类似于:JSFbean生命周期-如何存储请求属性,jsf,Jsf,因此,我有以下jsf页面(工作): My faces-config.xml类似于: <navigation-rule> <from-view-id>*</from-view-id> <navigation-case> <from-outcome>show_project</from-outcome> <to-view-id>/project.xhtml</to-view-id>
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>show_project</from-outcome>
<to-view-id>/project.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
*
show_项目
/project.xhtml
这一切都可以工作,除了ProjectController的projectId在调用openProject(调用openProject并在控制台中显示正确的id)和呈现页面之间丢失,页面在呈现页面时执行一些链接35;{ProjectController.getProjectId},因为这返回null
如何在呈现页面之前保留bean中的值?我尝试了一些@SessionScope、@RequestScope之类的东西,但坦率地说,我不理解JFS生命周期的完整扩展
为了提供更多信息,我使用JBoss AS 7.2和PrimeFaces 3.4.2来解决您的具体问题,即(老式的)导航案例指定了重定向。重定向基本上指示客户机在给定资源上发送一个全新的HTTP请求。您已设置属性的初始请求已为此被丢弃 我不确定您的具体功能需求是什么,因此很难提出正确的解决方案来实现这一点。一种方法是从导航案例中删除
条目。另一种方法是在目标页面中使用带有
和
的普通链接来设置/转换它(这会立即提高书签功能,从而提高SEO和UX)。另一种方法是使用闪光灯
另见:
- -了解重定向和导航/转发之间的区别
- -了解要选择的范围
- -查看f:param/f:viewParam方法的具体示例
条目。另一种方法是在目标页面中使用带有
和
的普通链接来设置/转换它(这会立即提高书签功能,从而提高SEO和UX)。另一种方法是使用闪光灯
另见:
- -了解重定向和导航/转发之间的区别
- -了解要选择的范围
- -查看f:param/f:viewParam方法的具体示例
无效。projectId仍然为空(在设置了is之后)。
的目的是强制更改浏览器窗口中的URL。我将尝试
解决方案并在稍后进行评论。然后,在目前提供的代码/信息中,还没有发现问题的另一个原因。也许你管理豆子的方式不好?打开sane JSF教程的第一章,创建一个“Hello World”。正是这种情况通常在普通的JSF Hello World中得到演示。正如您所说的“老式的”-我尝试了几个教程,但没有一个与现代方法兼容:(所以我找到了解决方案。除了删除
,我还添加了@RequestScoped
。谢谢。我想我会再次搜索更好的教程。停止阅读JSF 1.x资源,转到JSF 2.x资源。注意上面提到的版本。JSF 1.x和2.x就像白天和黑夜一样。谢谢你的回答。删除
不起作用。项目ID仍然为空(在设置is之后)。使用
的目的是强制在浏览器窗口中更改URL。我将尝试
解决方案,稍后进行评论。然后,在目前提供的代码/信息中还没有发现问题的另一个原因。也许您管理bean的方式不好?只需打开sane JSF教程的第一章,创建e“Hello World”。这个例子通常在一般的JSF Hello World中演示。正如您所说的“老式”-我尝试了几个教程,但似乎没有一个适合现代方法:(因此,我找到了解决方案。除了删除
,我还添加了@RequestScoped
。谢谢。我想我会再次搜索更好的教程。停止阅读JSF 1.x资源,转到JSF 2.x资源。注意上面提到的版本。JSF 1.x和2.x就像白天和黑夜一样。
@Named
public class ProjectController{
private Integer projectId;
public String openProject(Integer projectId){
// this works, System.out.println shows correct setting
this.projectId = projectId;
// now redirect to correct jsf page via faces-config.xml
return "show_project";
}
// this is called by the jsf page to be shown
public Integer getProjectId(){
// this is null :(
return this.projectId;
}
}
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>show_project</from-outcome>
<to-view-id>/project.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>