Java 默认情况下,将Component.ouputMarkupId设置为false背后的设计决策是什么?

Java 默认情况下,将Component.ouputMarkupId设置为false背后的设计决策是什么?,java,wicket,Java,Wicket,在Apache Wicket web框架中,默认情况下,每个组件都会从getOutMarkupId()返回false 我对原因很好奇。背后的设计决策。 我正在使用ajax组件,我需要刷新页面上的一些其他组件。为此,我在ajax页面刷新中涉及的每个组件上设置OutputMarkupId(true)。因为我大量使用ajax,所以我经常这样做。 而且不太方便。此外,“最好的代码是根本没有代码” 我可以这样处理: class MyApp extends Application { @Overri

在Apache Wicket web框架中,默认情况下,每个组件都会从getOutMarkupId()返回false

我对原因很好奇。背后的设计决策。

我正在使用ajax组件,我需要刷新页面上的一些其他组件。为此,我在ajax页面刷新中涉及的每个组件上设置OutputMarkupId(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时)

但是那些只有很小的内存占用。

它不能从.html中提取id(但它可以在1.5中提取)。
因此,这将覆盖那些id,您可能正在使用css/js等,从内存中我认为它不是默认设置的,它将覆盖任何现有的dom id,如果您使用dom id选择器,这可能会弄乱您的css


如果您没有看到这个问题,那么您的解决方案似乎很好。

对于这个特定问题,我建议您在Nabble论坛/邮件列表上提问,因为这是框架开发人员活跃的地方。伊戈尔亲自回答了许多张贴在那里的问题。我知道有一些人抱怨过这种默认行为,但要了解其背后的设计决策,您需要找到源代码。