簡體   English   中英

JSF將數據移動/重定向到其他頁面

[英]JSF move / redirect to other page with data

我有一個顯示數據表的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>

豆:

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”中使用“獲取”參數重定向到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將自動找到正確的視圖。 這稱為隱式導航


更新 :您似乎每頁只有一個“控制器” bean,並且您希望在這些bean之間共享數據,而無需引用頁面中的另一個 bean。 很合理 這可以通過將數據拆分到另一個托管bean中來實現,該托管bean將作為托管屬性注入到兩個“控制器” 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中,您需要通過faces-config中的<managed-property>注入它。 您可以在本文中找到一個示例。 在JSF 2.x中,您可以使用@ManagedProperty注釋托管屬性。 在以后的問題中,請提及您使用的JSF版本。 這樣,我們可以給出更詳細的合適答案,而不會產生噪音。 JSF 2.x在處理問題的方式上有很多差異(改進)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM