كيف تعمل خاصية "الربط" في JSF؟ متى وكيف ينبغي استخدامه؟


Answers

كل مكون JSF يجعل نفسه إلى HTML ولديه سيطرة كاملة على ما ينتج HTML. هناك العديد من الحيل التي يمكن استخدامها من قبل JSF ، وتحديد أي من هذه الحيل سيتم استخدامها يعتمد على تنفيذ JSF الذي تستخدمه.

  • تأكد من أن كل من الإدخال له اسم فريد مطلق ، بحيث أنه عندما يتم إرسال النموذج مرة أخرى إلى شجرة المكونات التي تجعله ، فمن السهل معرفة أين يمكن لكل مكون قراءة شكل قيمته.
  • يمكن لمكون JSF إنشاء javascript الذي يرسل مرة أخرى إلى serer ، حيث يعرف جافا سكريبت الذي تم إنشاؤه حيث يرتبط كل مكون أيضًا ، لأنه تم إنشاؤه بواسطة المكون.
  • بالنسبة إلى أشياء مثل hlink ، يمكنك تضمين معلومات الربط في عنوان url كمعلمات طلب البحث أو كجزء من عنوان url نفسه أو كمعلمات matrx. للحصول على أمثلة.

    http:..../somelink?componentId=123 سيسمح لـ jsf بالبحث في شجرة المكونات لرؤية النقر فوق الارتباط 123. أو يمكن أن ه htp:..../jsf;LinkId=123

أسهل طريقة للإجابة على هذا السؤال هي إنشاء صفحة JSF برابط واحد فقط ، ثم فحص مخرجات html التي تنتجها. بهذه الطريقة ستعرف بالضبط كيف يحدث هذا باستخدام إصدار JSF الذي تستخدمه.

Question

هناك الكثير من المواد هناك تميز بين خاصية value وسمات binding في JSF.

أنا مهتم بكيفية اختلاف كلا النهجين عن بعضهما البعض. معطى:

public class User {
    private String name;
    private UICommand link;

    // Getters and setters omitted.
}
<h:form>
    <h:commandLink binding="#{user.link}" value="#{user.name}" />
</h:form>

من المستقيم أن يحدث ما يحدث عندما يتم تحديد سمة value . يعمل برنامج getter لإرجاع قيمة name الخاصة بحساب User . تتم طباعة القيمة إلى إخراج HTML.

لكني لم أستطع فهم كيف يعمل binding . كيف يحافظ HTML الذي تم إنشاؤه على link بخاصية link حبة User ؟

في ما يلي الجزء ذو الصلة من الناتج الذي تم إنشاؤه بعد إجراء j_id_jsp_1847466274_1 اليدوي والتعليق (لاحظ أن الرقم j_id_jsp_1847466274_1 تم إنشاؤه تلقائيًا وأن هناك عنصرين إدخال مخفيين). أنا أستخدم Sun's JSF RI ، الإصدار 1.2.

<form action="/TestJSF/main.jsf" enctype="application/x-www-form-urlencoded"
    id="j_id_jsp_1847466274_1" method="post"  name="j_id_jsp_1847466274_1">
    <input name="j_id_jsp_1847466274_1" type="hidden" value="j_id_jsp_1847466274_1">
    <a href="#" onclick="...">Name</a>
    <input autocomplete="off" id="javax.faces.ViewState" name="javax.faces.ViewState"
        type="hidden" value="-908991273579182886:-7278326187282654551">
</form>

أين يتم تخزين binding هنا؟




Links