سؤال

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

في بريمج، أنا وأضاف ما يلي لطلب:

Map<String, String> facetValues = new HashMap<String, String>();
// Filling the map
req.setAttribute(facetField.getName(), facetValues);

في حالة واحدة "facetField.getName ()" يقيم إلى "الانضباط". حتى في صفحتي لدي ما يلي:

<ui:repeat value="${requestScope.discipline}" var="item">
  <li>Item: <c:out value="${item}"/>, Key: <c:out value="${item.key}"/>, Value: <c:out value="${item.item}"/></li>
</ui:repeat>

ووركض حلقة مرة واحدة بل جميع النواتج فارغة؟!؟ كنت أتوقع شيئا في البند على الأقل إذا انها ذهبت أكثر من حلقة واحدة. فحص المنبثقة التصحيح لFacelets والانضباط هناك وعلى الحلقة. طباعته الى نتائج الشاشة في شيء يشبه خريطة لي (لقد اختصر المخرجات):

{300=0, 1600=0, 200=0, ... , 2200=0}

ولقد حاولت ايضا مع ج: forEach لكن أنا الحصول على نفس النتائج. لذلك لا أحد لديه أي أفكار أين سأذهب الخطأ؟

وشكرا لأي مساهمة، لي

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

المحلول

و<ui:repeat> لا يقبل سوى قائمة أو نماذج بيانات، وليس مجموعات أو خرائط. هذا هو على خارطة طريق لJSF 2.1.

نصائح أخرى

ومع 2.2 الدعم شرم يمكنك تكرار الخرائط مثل أدناه.

<ui:repeat value="#{myBean.stats.keySet().toArray()}" var="x">
    <h:outputText value="#{myBean.stats.get(x)}" /><br />
</ui:repeat>

وتحدث ثلاثة أشياء لي:

1.

ثائق واجهة المستخدم: تكرار دوسن 'ر يقول ذلك (إلا أنها تقول <م> قائمة )، ولكن أرى الاستخدامات UIRepeat <لأ href = "http://java.sun.com/javaee/5/docs/api/javax/faces/ نموذج / حزمة summary.html "يختلط =" نوفولو noreferrer "> نماذج بيانات نموذجا له (في طريقة ح: DataTable و). خريطة لن تكون ملفوفة تلقائيا مع نماذج بيانات نوع - لا يتم اعتماد نوع ضمنا. سوف تحتاج إما إلى جعل قيمة مثيل بنفسك <م> نماذج بيانات التنفيذ أو توفر لهم كنوع بدعم ضمني (مثل java.util.List ).

2

وأنا لست متأكدا ما كنت تنوي هذه القيم لتعيين:

${item}
${item.key}
${item.item}

إذا قمت بتغيير "الانضباط" لتكون من نوع <م> قائمة > ، هل يمكن ربط في مفتاح وقيمة خصائص:

${item.key}
${item.value}

ويمكنك إنشاء قائمتك مثل ذلك:

Map<String, String> facetValues = new HashMap<String, String>();
// Filling the map
List<Map.Entry<String, String>> discipline
        = new ArrayList<Map.Entry<String, String>>(facetValues.entrySet());

3.

ويتم تقييم أن علامات JSTL فقط على العنصر شجرة وقت الخلق. ومن غير الواضح بالنسبة لي سواء باستخدام ج: من كطفل من واجهة المستخدم: تكرار ستعمل بشكل صحيح. قد تحتاج إلى استخدام ح: outputText بدلا من ذلك. (قد أكون مخطئا حول هذا، بطبيعة الحال - لم أحاول ذلك)


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

في بريمج، أنا وأضاف التالي إلى طلب

وهذا يبدو وكأنه وسيلة غريبة لوضع شيء في نطاق الطلب في JSF، ولكنني سوف نثق أن تعرف ما تفعلونه!

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