วิธีรับถั่วจากขอบเขตการมองเห็น

ฉันต้องการถามว่าฉันวาง Managed bean ไว้ในขอบเขตเซสชันหรือไม่ จากนั้นจะถูกเก็บไว้ในเซสชัน ' เช่นถ้าฉันมี bean เช่นนี้

@ManagedBean
@SessionScoped
public class SessionScopedBean implements Serializable {

    .......

} //end of class SessionScopedBean

จากนั้นมันจะจัดเก็บไว้ในเซสชั่น และระหว่างเซสชั่นของฉัน ฉันสามารถใช้มันได้

session.getAttribut("SessionScopedBean");

สิ่งนี้จะให้วัตถุ SessionScopedBean แก่ฉัน และเมื่อเซสชันถูกทำลาย ฉันจะเป็นโมฆะ ตอนนี้ฉันอยากจะถามว่าฉันมี bean ใน view Scope หรือไม่ แล้วฉันจะได้มันมาได้อย่างไร ชอบ

@ManagedBean
@ViewScoped
public class ViewScopedBean implements Serializable {

    .......

} //end of class ViewScopedBean

ตอนนี้ถ้ามุมมองยังคงอยู่ bean นี้ก็จะอยู่ในสถานะมุมมอง และเมื่อมุมมองเปลี่ยนไป bean นี้จะถูกทำลาย ตอนนี้ฉันต้องการถามว่าฉันจะรับ bean นี้จากสถานะมุมมองได้อย่างไร หากมุมมองยังคงมีอยู่ ชอบ

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

ขอบคุณ


person Basit    schedule 07.02.2012    source แหล่งที่มา


คำตอบ (1)


สิ่งเหล่านี้ถูกจัดเก็บไว้ในแผนที่มุมมองตามที่มีให้โดย UIViewRoot#getViewMap():

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

ในทำนองเดียวกัน คุณควรใช้นามธรรมแผนที่เซสชันซึ่งมีให้โดย ExternalContext#getSessionMap() (ท้ายที่สุดแล้วคุณต้องการให้มีการประกาศการนำเข้า ศูนย์ javax.servlet ตลอดทั้งโค้ด JSF ของคุณ):

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

ดูสิ่งนี้ด้วย:


ไม่เกี่ยวข้องกับปัญหาที่เป็นรูปธรรม นี่อาจไม่ใช่วิธีที่ดีที่สุด ดูที่ @ManagedProperty หากเป็นไปได้

person BalusC    schedule 07.02.2012
comment
พารามิเตอร์ของ viewMap viewMap.get("viewScopedBean"); เป็นชื่อ EL หรือไม่ สิ่งนี้ใช้ได้กับถั่วที่จัดการโดย JSF เท่านั้นหรือไม่ หากเป็นเช่นนั้น ฉันจะรับ bean ที่มีขอบเขตการดูที่จัดการโดย CDI (ตะเข็บ 3) ได้อย่างไร -› stackoverflow.com/questions/42008956/ - person Kawu; 03.02.2017