JSF表单提交问题

时间:2010-07-27 06:13:54

标签: java jsp jsf

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
}

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

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

1 个答案:

答案 0 :(得分:1)

  • 不使用重定向,使用转发(在导航的情况下)
  • 如果使用JSF 2.0,请使用@ViewScope
  • 查看MyFaces Orchestra
  • 从richfaces
  • 尝试<a4j:keepAlive>