JSF에서 htmloutputtag의 값을 어떻게 설정합니까?
문제
콩에서 컨트롤을 동적으로 생성하고 싶습니다. 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}" />
즉, 기능적 요구 사항에 따라 기능적 요구 사항을 해결하는 더 개선적이고 깨끗한 방법이있을 수 있습니다. 원한다면, 필요한 경우 더 나은 방법을 제안 할 수 있도록 그것에 대해 조금 더 자세히 설명 할 수 있습니다.
다른 팁
처럼 보통의, 내 조언은 구성 요소를 동적으로 추가/제거하지 않는 것입니다. 다른 방법으로 문제를 해결하십시오.
- 비녀장 구성 요소의 가시성
- 반점 데이터 구성 요소에 속합니다
구성 요소를 동적으로 추가/제거하는 것은 항상 문제의 원인이며 다른 방법으로 훨씬 간단한 방법으로 할 수 있습니다.
그만큼 outputText
구성 요소는 사용하기 쉽습니다.
<h:outputText value="#{BackingBean.myProperty}"/>
그리고 당신은 getter/setter를 정의합니다 myProperty
당신의 백킹 콩에. 당신이 정말로 프로그래밍 방식으로 그것을하고 싶다면 (당신이 강한 논쟁이 없다면 나는 낙담하지 않습니다) 여기에 있습니다. 예시 동적 테이블로.