سؤال

أريد إنشاء عناصر تحكم ديناميكيا في فولي. أنا أستخدم JSF 2.0

HtmlOutputTag objHtmlOutputTag = new HtmlOutputTag();

الآن أي ممتلكات HtmlOutputTag يجب أن أقوم بتعيين محتوى HtmlOutputTag?

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

المحلول

ال HtmlOutputTag يمثل علامة، وليس مكون. بدلا استخدام HtmlOutputText. وبعد ثم، يمكنك فقط ضبط value الممتلكات، تماما كما تفعل في مكون حقيقي في صفحة JSF. إذا كنت في حاجة إليها ليكون ValueExpression بدلا من الخام value, ، ثم تحتاج إلى إنشاء تكنولوجيا المعلومات ExpressionFactory#createValueExpression(). وبعد إليك مثال بداية:

HtmlOutputText text = new HtmlOutputText();
text.setValueExpression("value", createValueExpression("#{bean.property}", String.class));

حيث طريقة الراحة createValueExpression() هنا تبدو هنا:

private static ValueExpression createValueExpression(String valueExpression, Class<?> valueType) {
    FacesContext context = FacesContext.getCurrentInstance();
    return context.getApplication().getExpressionFactory()
        .createValueExpression(context.getELContext(), valueExpression, valueType);
}

إخفاءها بعيدا في بعض فئة المرافق حتى لا تحتاج إلى تكرار كل هذا الرمز مرارا وتكرارا؛) valueType من الواضح أن الحجة يجب أن تمثل النوع الفعلي من العقار.

يجب أن تبدو النتيجة النهائية في صفحة JSF بعد ذلك:

<h:outputText value="#{bean.property}" />

ومع ذلك، اعتمادا على المتطلبات الوظيفية، قد يكون هناك بالفعل طرق أفضل وأنظفها لحل المتطلبات الوظيفية. إذا كنت تريد، يمكنك توضيح المزيد حول هذا الموضوع حتى نتمكن من اقتراح طرق أفضل.

نصائح أخرى

كما معتاد, ، سيكون نصيحتي عدم إضافة / إزالة المكون ديناميكيا. حل مشكلتك بطريقة أخرى:

  • تبديل وضوح المكونات
  • rebind the. بيانات ينتمون إلى مكون

مضيفا / إزالته مكون ديناميكيا هو دائما مصدر للمشاكل والاحتمالات أنه يمكنك القيام بذلك بطريقة أخرى أكثر بساطة.

ال outputText المكون سهل الاستخدام:

<h:outputText value="#{BackingBean.myProperty}"/>

وتحدد الحصول على getter / sedter ل myProperty في فاصولي الدعم الخاص بك. إذا كنت ترغب حقا في القيام بذلك برمجيا (الذي تثني إلا إذا كان لديك حجج قوية)، فإليك مثال مع طاولة ديناميكية.

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