2

Apache Wicket Web フレームワークでは、すべてのコンポーネントがデフォルトで getOuputMarkupId() から false を返します

その理由が気になります。背後にあるデザインの決定。

私は ajax コンポーネントを使用しており、ページ上の他のコンポーネントを更新する必要があります。そのためには、ajax ページの更新に関係するすべてのコンポーネントで setOutputMarkupId(true) を使用する必要があります。私は ajax を頻繁に使用するため、頻繁に使用する必要があります。そして、それはあまり便利ではありません。「最良のコードは、まったくコードがないことです」のほかに。

私はこのようにそれを扱うことができます:

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 に書き出される場合)

しかし、それらはフットプリントが小さいだけです。

4

2 に答える 2

4

.html から ID を取得することはできません (ただし、1.5 では可能です)。したがって、これは、css/js などに使用している可能性のある ID をオーバーライドします。

于 2010-02-26T19:33:15.613 に答える
0

メモリからは、デフォルトでは設定されていないと思います。既存のdom idが上書きされ、domidセレクターを使用している場合にcssが混乱する可能性があります。

この問題が見られない場合、あなたの解決策は良いようです。

于 2010-02-27T14:32:34.407 に答える