كيف يمكنني تعيين قيمة htmloutputtag في JSF؟
سؤال
أريد إنشاء عناصر تحكم ديناميكيا في فولي. أنا أستخدم 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
في فاصولي الدعم الخاص بك. إذا كنت ترغب حقا في القيام بذلك برمجيا (الذي تثني إلا إذا كان لديك حجج قوية)، فإليك مثال مع طاولة ديناميكية.