2010-02-26 1 views
2

Apache Wicket 웹 프레임 워크에서 모든 구성 요소는 기본적으로 getOuputMarkupId()에서 false를 반환합니다..기본적으로 Component.ouputMarkupId를 false로 설정 한 후의 설계 결정은 무엇입니까?

이유에 대해 궁금합니다. 뒤에있는 디자인 결정.

저는 아약스 구성 요소를 사용하고 있으며 페이지의 다른 구성 요소를 새로 고쳐야합니다. 이를 위해 ajax 페이지 새로 고침과 관련된 모든 구성 요소에 setOutputMarkupId (true)를 설정해야합니다. 내가 아약스를 많이 사용하기 때문에 나는 그것을 아주 자주해야한다. 그리고별로 편리하지 않습니다. "최상의 코드는 모두 No Code At"입니다.

나는 그것을 이런 식으로 처리 할 수 ​​있습니다

class MyApp extends Application { 

    @Override 
    public init() { 

     Application.addComponentInstantiationListener(
      new IComponentInstantiationListener() { 

        public void onInstantiation(Component component) { 
         component.setOutputMarkupId(true); 
         component.setOutputMarkupPlaceholderTag(true); 
        } 

      } 
     ); 

을하지만 어떤 트레이드 오프가? 만 절충 내 마음에 오는 있습니다

  • 렌더링 된 페이지 (HTML)는 일부 렌더링 오버 헤드가
  • 큰 (즉, ID 속성은 아래 HTML로 쓸 수 있습니다.)

그러나 그것들은 작은 풋 프린트 이모만을 가지고 있습니다.

+1

이 질문에 대해서는 Nabble 포럼/메일 링리스트에서 프레임 워크 개발자가 활발하게 활동하는 곳을 묻는 것이 좋습니다. 이고르는 거기에 게시 된 많은 질문에 개인적으로 대답합니다. 나는이 기본 행동에 대해 불평하는 소수의 사람들을 알고 있지만 그 뒤에있는 디자인 결정을 알기 위해서는 근원지에 가야 할 필요가있다. –

답변

4

.html에서 가져온 ID는 가져올 수 없습니다 (아직 1.5에서 가능). 그래서이 코드는 CSS의/js 등을 위해 사용할 수있는 ID를 덮어 쓰게됩니다.

+0

나는 본다! 이제 이해합니다 ... Thx .. –

0

메모리에서 저는 기본값으로 설정되지 않았다고 생각하면 기존 DOM ID를 덮어 쓰며 CSS가 엉망이 될 수 있습니다. DOM ID 선택자를 사용합니다.

이 문제가 보이지 않으면 해결책이 좋을 것 같습니다.