我必须警告你:这个问题可能相当愚蠢,但我现在似乎无法理解它。
我有两个托管 bean,比方说 A 和 B:
class A
{
private Date d8; // ...getters & setters
public String search()
{
// search by d8
}
}
class B
{
private Date d9; //...getters & setters
public String insert()
{
// insert a new item for date d9
}
}
然后我有两个 JSP 页面,pageA.jsp(搜索页面)和 pageB.jsp(输入页面)。 我想做的是在 pageB 中放置一个 commandbutton 以便打开搜索页面 pageA 传递参数 d9> 以某种方式,或者在 b.insert() 之后直接导航到 pageA。我想做的是在插入后显示搜索结果。
也许只是我看不到清晰、简单的解决方案,但我想知道这里的最佳实践是什么......
我想到了这些可能的解决方案:
- 在 **B** 中包含 **A** 并将命令按钮与 **b.a.search** 链接
- 将 **d9** 作为 **hiddenInput** 传递并在 **A** 中添加新方法 **searchFromB**(丑陋!)
- 将两个 bean 合二为一
最佳答案
JSF 1.1/1.2 raw 没有提供执行此操作的简单方法。 Seam/Spring 都有办法解决这个问题,您可以做几件事。一旦发布,JSF 2 也应该有解决方案。
可能最简单和最方便的方法是将两个 bean 合并为一个并使其具有 session 作用域。当然,担心的是这个 bean 不会被删除并保持在 session 中直到 session 超时。耶内存泄漏!
另一种解决方案是将日期作为 GET 参数传递。例如,您的操作方法可以调用
FacesContext.getCurrentInstance().getExternalContext().redirect("pageB?d9=" + convertDateToLong(d9));
然后获取另一边的参数。
关于java - JSF:导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063033/