문제

콩에서 컨트롤을 동적으로 생성하고 싶습니다. 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 당신의 백킹 콩에. 당신이 정말로 프로그래밍 방식으로 그것을하고 싶다면 (당신이 강한 논쟁이 없다면 나는 낙담하지 않습니다) 여기에 있습니다. 예시 동적 테이블로.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top