سؤال

أريد عرض البيانات باستخدام h:dataTable العلامات في JSF يجب أن تكون البيانات التي أعرضها في شكل مثل هذا:

Name:   XXXX
ID:  8989
Age:    32

لقد رأيت عدة أمثلة على الويب تخبرك بكيفية عرض البيانات مثل هذا:

الاسم معرف العمر xxx 8989 32

منذ dataTable تحتوي العلامة على علامة فرعية فقط h:column و لا h:row أواجه مشكلات مع هذا.هل هناك طريقة أفضل للقيام بذلك؟لقد قمت بتطبيق التنسيق الأول الذي ذكرته باستخدام h:datable و h:column, ، لذا أولاً أكتب جميع رؤوس الأعمدة في العمود 1 ثم أكتب جميع القيم في العمود 2.المشكلة التي أواجهها هي أنه عندما تكون إحدى القيم فارغة، تتم طباعة القيمة التالية في مكانها وتظهر البيانات خاطئة، وهذه مشكلة تنسيق حقًا.عندما تكون البيانات فارغة، يجب ترك مساحة لها ثم طباعة القيمة التالية في الصف التالي.آمل أن أكون منطقيًا، وستكون أي أفكار موضع تقدير كبير.


حاولت إضافة ما يلي:

<h6><h:outputText value="#{empty imeiInfo.userEmail ? '&#160;' : imeiInfo.userEmail}"></h:outputText></h6><br/>

ولكن هناك خطأ نحوي في هذا الأمر ولا أستطيع اكتشافه، والرسالة التي تظهر لي هي:

خطأ في بناء الجملة في EL

أيه أفكار؟شكرًا.

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

المحلول

هل هو فقط للبيانات غير المتكررة؟إذا كان الأمر كذلك، استخدم <h:panelGrid>

على سبيل المثال:

<h:panelGrid columns="2">
   <h:outputText value="Name:"/>
   <h:outputText value="#{person.name}"/>
   <h:outputText value="ID:"/>
   <h:outputText value="#{person.id}"/>
   <h:outputText value="Age:"/>
   <h:outputText value="#{person.age}"/>
</h:panelGrid>

إذا كان لتكرار البيانات (على سبيل المثال."أشخاص متعددين")، فلديك عدد من الخيارات اعتمادًا على المكتبات الأخرى التي تستخدمها.على سبيل المثال:

1:قم ببناء طاولتك الخاصة باستخدام Facelets <ui:repeat> (يمكنك أن تفعل الشيء نفسه مع <c:for>).على سبيل المثال:

<table>
    <ui:repeat value="#{myBean.persons}" var="person">
        <tr>
           <td>
              <h:outputText value="Name:"/>
           </td>
           <td>
              <h:outputText value="#{person.name}"/>
           </td>
        </tr>
        <tr>
           <td>
              <h:outputText value="ID:"/>
           </td>
           <td>
              <h:outputText value="#{person.id}"/>
           </td>
        </tr>
        <tr>
           <td>
              <h:outputText value="Age:"/>
           </td>
           <td>
              <h:outputText value="#{person.age}"/>
           </td>
        </tr>
        <tr>
           <td colspan="2">
              &#160;
           </td>
        </tr>
    </ui:repeat>
</table>

يحرر: لم أجرب هذا ولكن يجب أن تكون قادرًا على إحاطة المثال الأول (<h:panelGrid>) مع <c:for> لتقديم العناصر المتكررة.ال <c:for> تتم معالجتها قبل <h:panelGrid>.يجب أن تعمل.

نصائح أخرى

ولست متأكدا من أن نفهم كيف تريد لجعل الجدول الخاص بك. وأعتقد أنه سيكون مساعدتنا إذا كنت يمكن أن توفر رمز JSF من الجدول الخاص بك ...

ولكن، بشأن هذه النقطة:

<اقتباس فقرة>   

وعندما تكون البيانات فارغة عليه أن يغادر   مساحة له ومن ثم طباعة المقبل   القيمة في الصف التالي

وربما يمكنك أن تجرب شيئا من هذا القبيل:

<h:outputText value="#{empty aRecord.name ? '&#160;' : aRecord.name}"/>

وهذا الرمز سيجعل مساحة غير قابلة للكسر إذا كان اسم سجل فارغ، وإلا فإنه سوف يجعل name من السجل.

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