簡體   English   中英

在jsf視圖上檢索會話對象

[英]retrieve session object on jsf view

我有一個RequestController (@ManagedBean和@ViewScoped)是視圖范圍的,因為我們使用的是一些Ajax調用。

我有一個帶有結果的dataTable,每個結果帶有一個按鈕

<p:commandButton action="#{requestController.requestDetail()}" icon="ui-icon-search" title="Detalhes">
     <f:setPropertyActionListener target="#{requestController.backing.selectedRequestVO}" value="#{order}" />
</p:commandButton>

這個方法是接收我的dataTable的選定對象並在會話上設置,它正在工作,問題是我不知道如何從我的視圖中獲取此會話對象。

public void requestDetail() throws IOException {
        FacesContext context = FacesContext.getCurrentInstance();
    context.getExternalContext().getSessionMap().put("requestDetail",backing.selectedRequestVO);context.getExternalContext().redirect(context.getExternalContext().getRequestContextPath() + "/views/request/detail.html");
    }

我需要從我的視圖中訪問它,因為此對象具有請求詳細信息。

它只能由您自己指定的屬性名稱提供。

#{requestDetail}

請注意,這不是正確的方法。 您應該有另一個會話范圍的托管bean,您在視圖范圍的托管bean中注入@ManagedProperty ,然后將請求詳細信息設置為其屬性。

@ManagedBean
@ViewScoped
public class RequestController {

    @ManagedProperty("#{requestDetail}")
    private RequestDetail requestDetail;

    public String requestDetail() {
        requestDetail.setSelectedRequestVO(backing.getSelectedRequestVO());
        return "/views/request/detail.html?faces-redirect=true";
    }     

    // ...
}

@ManagedBean
@SessionScoped
public class RequestDetail {

    private RequestVO selectedRequestVO;

    // ...
}

然后您可以按如下方式訪問

#{requestDetail.selectedRequestVO} 

暫無
暫無

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

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