سؤال

لدي بعض الشكوك حول تحليل علامات هتمل في فاسيليت.دعونا لدينا فاسيليت الذي يحتوي على ما يلي

<h:inputText id="username"
             title="My name is: "
             value="#{hello.name}"
             required="true"
             requiredMessage="Error: A name is required."
             rendered="false"
             maxlength="25" />
<h:commandButton id="submit" value="Submit" action="response">
            </h:commandButton>

بعد إرسال انقر أنا لم Error: A name is required.لم؟ username فقط لم تصدر ، وبعد submit انقر فوق لا توجد قيمة في username.

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

المحلول

ال rendered يتم تقييم السمة أيضا أثناء مراحل التحقق وتحديث قيم النموذج.للحصول على أدلة ، تحقق javax.faces.component.UIInput شفرة المصدر (أرقام الأسطر حسب موجارا 2.2.0):

696     public void processValidators(FacesContext context) {
697 
698         if (context == null) {
699             throw new NullPointerException();
700         }
701 
702         // Skip processing if our rendered flag is false
703         if (!isRendered()) {
704             return;
705         }
...
...
...
735     public void processUpdates(FacesContext context) {
736 
737         if (context == null) {
738             throw new NullPointerException();
739         }
740 
741         // Skip processing if our rendered flag is false
742         if (!isRendered()) {
743             return;
744         }

التفسير بسيط:هذا هو حماية ضد العبث (المخادعة/اختراق) طلبات هتب حيث المستخدمين النهائيين التلاعب هادف طلب هتب في محاولة لتعيين القيم و/أو استدعاء إجراءات المدخلات/الأوامر المخفية التي هم على الأرجح ببساطة لا يسمح لتحديث أو استدعاء ، مثل زر حذف الذي يظهر فقط عندما يكون للمستخدم دور المشرف:

<h:commandButton value="Delete" ... rendered="#{request.isUserInRole('ADMIN')}" />

ملاحظة:المكون readonly و disabled يتم التعامل مع السمات أيضا بهذه الطريقة.لغرضك الخاص ، استخدم كس display: none بدلا من ذلك.

<h:inputText ... style="display:none" />

(ملاحظة:هذا هو مثال انطلاق المباراة ، وذلك باستخدام style السمة هي ممارسة سيئة في منظور هتمل / كس ، تفضل styleClass مع ملف كس ملموسة)

على الرغم من أنني أتساءل عن المتطلبات الوظيفية الملموسة وراء ذلك ، إلا أن هذا أمر سيء لتجربة المستخدم.ربما كنت مجرد تجريب عشوائيا حولها دون دراسة الأولى جسف مواصفات ناهيك جسف شفرة المصدر?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top