gpt4 book ai didi

java - JSF 移动/重定向到其他包含数据的页面

转载 作者:行者123 更新时间:2023-12-02 08:29:35 25 4
gpt4 key购买 nike

我有一个显示数据表的 JSP 页面 (page1.jsp)。表格中还有这样的按钮:

<h:column>
<f:facet name="header" >
<h:outputText value=""/>
</f:facet>
<h:commandButton value="Show items" action="#{firstBean.displayItems}" immediate="true" />
</h:column>

bean :

public void displayItems() throws IOException {
MyClass theClass = (MyClass) dataTable.getRowData();
String theId = theClass.getIdentityNumber();
// ...
}

当我们单击按钮时,我想移动到另一个 JSP 页面 (page2.jsp)。第2页还有一个数据表。该表是通过调用名为“facade”的 bean 和参数(字符串 - id)创建的。即,当按下按钮时,我想移动到 JSP 页面 2,该页面将显示基于如下调用的数据表:

myList = facade.getDeliveriesById(theId);

所以第 2 页依赖于第 1 页的内容,要么是字符串 id,要么是否可以以某种方式设置列表?

我想问题是:

  • 提取此 id 后(见上文),我应该在“firstBean.displayItems”中使用“get”参数重定向到 jsp 页面 2 吗?
  • 有没有办法在“firstBean.displayItems”中设置要在第 2 页上使用的列表?

在 JSF 中从一个页面转到另一个页面(带有数据)的正常方式是什么?

最佳答案

在 JSF 1.x 中,正常的方法是返回 String作为导航案例结果。

public String displayItems() throws IOException {
MyClass theClass = (MyClass) dataTable.getRowData();
String theId = theClass.getIdentityNumber();
return "page2";
}

faces-config.xml 中的以下条目结合使用:

<navigation-rule>
<navigation-case>
<from-outcome>page2</from-outcome>
<to-view-id>/page2.jsf</to-view-id>
</navigation-case>
</navigation-rule>

然后它将转到 page2.jsf .

在 JSF 2.x 上,您不需要 faces-config.xml 。只需返回不带扩展名的确切文件名,例如"page2"然后 JSF 将自动找到正确的 View 。这称为implicit navigation .

<小时/>

更新:您似乎每页都有一个“ Controller ”bean,并且您希望在这些 bean 之间共享数据,而不引用页面中的其他 bean页。非常合理。这可以通过将数据拆分到另一个托管 bean 中来实现,该托管 bean 将作为托管属性注入(inject)到两个“ Controller ”bean 中。

例如

public class ControllerBean1 {
private DataBean dataBean;

public String submit() {
MyClass theClass = (MyClass) dataTable.getRowData();
String theId = theClass.getIdentityNumber();
dataBean.setTheId(theId);
return "page2";
}

// ...
}

public class ControllerBean2 {
private DataBean dataBean;

// ...
}

您可以通过 page2 访问它如下:

<h:outputText value="#{controllerBean2.dataBean.theId}" />

在 JSF 1.x 中,您需要通过 <managed-property> 注入(inject)它在面孔配置中。您可以在 this article 中找到示例。 。在 JSF 2.x 中,您只需使用 @ManagedProperty 注释托管属性即可。 。 在以后的问题中,请提及您正在使用的 JSF 版本。这样我们就可以给出更详细的适合答案而不会产生噪音。 JSF 2.x 在处理问题的方式上有相当多的差异(改进)。

关于java - JSF 移动/重定向到其他包含数据的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3761251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com