cara mendapatkan kacang dari cakupan tampilan

Saya ingin bertanya apakah saya menempatkan kacang yang saya kelola di ruang lingkup sesi, kemudian disimpan dalam sesi' Seperti jika saya memiliki kacang seperti ini

@ManagedBean
@SessionScoped
public class SessionScopedBean implements Serializable {

    .......

} //end of class SessionScopedBean

Kemudian disimpan di sesi, dan selama sesi saya, saya bisa menggunakannya

session.getAttribut("SessionScopedBean");

Ini akan memberi saya Objek SessionScopedBean, dan ketika sesi dihancurkan, saya akan mendapatkan nol. Sekarang saya ingin bertanya apakah kacang saya sudah ada di View Scope, lalu bagaimana saya bisa mendapatkannya. Menyukai

@ManagedBean
@ViewScoped
public class ViewScopedBean implements Serializable {

    .......

} //end of class ViewScopedBean

Sekarang jika tampilan tetap ada maka kacang ini berada dalam status tampilan, dan ketika tampilan berubah, kacang ini akan dihancurkan. Sekarang saya ingin bertanya bagaimana saya bisa mendapatkan kacang ini dari status tampilan, jika tampilan tetap ada. Menyukai

view.getAttrubute("ViewScopedBean");  //just a code. No actual implementation.

Terima kasih


person Basit    schedule 07.02.2012    source sumber


Jawaban (1)


Mereka disimpan dalam tampilan peta sebagaimana tersedia oleh UIViewRoot#getViewMap():

Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();
ViewScopedBean viewScopedBean = (ViewScopedBean) viewMap.get("viewScopedBean");
// ...

Demikian pula, Anda juga harus menggunakan abstraksi peta sesi yang tersedia di ExternalContext#getSessionMap() (Anda pada akhirnya ingin memiliki deklarasi impor nol javax.servlet di seluruh kode JSF Anda):

Map<String, Object> sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
SessionScopedBean sessionScopedBean = (SessionScopedBean) sessionMap.get("sessionScopedBean");
// ...

Lihat juga:


Tidak ada hubungannya dengan masalah nyata, ini mungkin bukan cara terbaik. Lihat @ManagedProperty jika memungkinkan.

person BalusC    schedule 07.02.2012
comment
Apakah parameter viewMap viewMap.get("viewScopedBean"); merupakan nama EL? Apakah ini hanya berfungsi untuk kacang yang dikelola JSF? Jika demikian, bagaimana cara mendapatkan kacang dengan cakupan tampilan yang dikelola CDI (Seam 3)? -› stackoverflow.com/questions/42008956/ - person Kawu; 03.02.2017