سؤال

لقد قرأت في JSF المستندات التي ResponseStateManager لديه isPostBack() الأسلوب.كيف (و حيث) هل لي مثيل ResponseStateManager?

هل كانت مفيدة؟

المحلول

كيف أعرف إذا أنا في إعادة النشر?

يعتمد على JSF الإصدار.

في JSF 1.0/1.1, لا يوجد ResponseStateManager#isPostback() طريقة متاحة.تحقق مما إذا كان javax.faces.ViewState المعلمة موجود في طلب المعلمة خريطة متاحة من قبل ExternalContext#getRequestParameterMap().

public static boolean isPostback() {
    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    return externalContext.getRequestParameterMap().contains("javax.faces.ViewState");
}

في JSF 1.2 في الواقع استخدام ResponseStateManager#isPostback() والذي بدوره فعلا يتحقق وجود javax.faces.ViewState معلمة في طلب المعلمة الخريطة.

public static boolean isPostback() {
    FacesContext context = FacesContext.getCurrentInstance();
    return context.getRenderKit().getResponseStateManager().isPostback(context);
}

في JSF 2.0, بدلا من استخدام FacesContext#isPostback(), الذي ظل يغطي في الواقع المندوبين ResponseStateManager#isPostback().

public static boolean isPostback() {
    return FacesContext.getCurrentInstance().isPostback();
}

نصائح أخرى

في الواقع, قبل jsf1.2, isPostBack تم الحصول عليها من خلال requestScope الحالي مثيل FaceContext.

منذ JSF1.2 ResponseStateManager (مساعد فئة StateManager أن يعرف التقديم المحددة التكنولوجيا المستخدمة لتوليد استجابة ، المفرد فئة مجردة, المباعة من قبل RenderKit.)

خلال استعادة عرض المرحلة من دورة الحياة ، ViewHandler باسترداد ResponseStateManager كائن من أجل اختبار ما إذا كان طلب إعادة النشر أو طلب أولي.

إذا طلب هو إعادة النشر, therestoreView طريقة ViewHandler يسمى.يستخدم هذا الأسلوب theResponseStateManager كائن إلى إعادة بناء مكون شجرة واستعادة الدولة.بعد الشجرة هو بناء الدولة المستعادة ، theViewHandler سبيل المثال ليست هناك حاجة إلى تقديم استجابة المرحلة يحدث مرة أخرى.

أن المادة satellite أعلاه (إنشاء مخصص تقديم عدة) يوضح كيفية تنفيذ/الحصول على ResponseStateManager خلال RenderKit (تعريف الوسم معالج تنفيذ الوسم الذي يجعل عنصر).
قد يكون هذا كافيا بالنسبة لك للحصول على الخاص بك ResponseStateManager في السياق ؟

بالنسبة JSF1.2

public static boolean isPostback(){
    FacesContext context = FacesContext.getCurrentInstance();
    return context != null && context.getExternalContext().getRequestParameterMap().containsKey(ResponseStateManager.VIEW_STATE_PARAM);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top