Java JSF表单提交问题

Java JSF表单提交问题,java,jsp,jsf,Java,Jsp,Jsf,在JSP中,出于某些原因,我使用c:foreach迭代模型并在HTML表中显示项目。jsp页面有一个searh按钮,其操作映射到{mybackingbean.search}。因此,当我单击搜索时,我希望在同一页面上只显示一个子集(基于搜索参数)。我的问题是,“当我单击“搜索”按钮时,搜索方法被调用,它返回一个视图名称。由于bean是请求范围的,因此在此之后将创建一个新的bean实例,并且最终init方法将覆盖结果。这意味着,我将得到相同的初始视图,其中显示所有项,而不是仅显示匹配项” 这有什么问

在JSP中,出于某些原因,我使用c:foreach迭代模型并在HTML表中显示项目。jsp页面有一个searh按钮,其操作映射到{mybackingbean.search}。因此,当我单击搜索时,我希望在同一页面上只显示一个子集(基于搜索参数)。我的问题是,“当我单击“搜索”按钮时,搜索方法被调用,它返回一个视图名称。由于bean是请求范围的,因此在此之后将创建一个新的bean实例,并且最终init方法将覆盖结果。这意味着,我将得到相同的初始视图,其中显示所有项,而不是仅显示匹配项”

这有什么问题?请指导我解决这个问题的理想方法。

  • 不要使用重定向,使用前进(在导航情况下)
  • 如果使用JSF2.0,请使用
    @ViewScope
  • 检查我的脸
  • 从richfaces中尝试

如何修改我的导航用例来使用转发而不是重定向。你能举一个例子吗?@用户只是一个建议——考虑使用JBaseSeo结合JSF,并将视图切换到FACELET而不是JSP。这是一个更好的组合。你可以在你的未来项目中尝试它。@用户:如果你在导航案例中有<代码> <代码>,将使用重定向。将其删除。重定向将让客户端触发一个新的GET请求,该请求基本上会在调用submit方法后强制创建一个新的bean实例。转发不会这样做。它将使用与调用submit方法后状态相同的bean。您的症状表明您正在使用重定向。
public class MyBackingBean{

private List model;

public String search(){
  //change model data
  model = doSearch();
  return "same_view"
}

@PostConstruct
public void init(){
  model = loadDefault()
}

//Other code omitted for clarity
}