Java 默认情况下,将Component.ouputMarkupId设置为false背后的设计决策是什么?
在Apache Wicket web框架中,默认情况下,每个组件都会从getOutMarkupId()返回false 我对原因很好奇。背后的设计决策。 我正在使用ajax组件,我需要刷新页面上的一些其他组件。为此,我在ajax页面刷新中涉及的每个组件上设置OutputMarkupId(true)。因为我大量使用ajax,所以我经常这样做。 而且不太方便。此外,“最好的代码是根本没有代码” 我可以这样处理:Java 默认情况下,将Component.ouputMarkupId设置为false背后的设计决策是什么?,java,wicket,Java,Wicket,在Apache Wicket web框架中,默认情况下,每个组件都会从getOutMarkupId()返回false 我对原因很好奇。背后的设计决策。 我正在使用ajax组件,我需要刷新页面上的一些其他组件。为此,我在ajax页面刷新中涉及的每个组件上设置OutputMarkupId(true)。因为我大量使用ajax,所以我经常这样做。 而且不太方便。此外,“最好的代码是根本没有代码” 我可以这样处理: class MyApp extends Application { @Overri
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论坛/邮件列表上提问,因为这是框架开发人员活跃的地方。伊戈尔亲自回答了许多张贴在那里的问题。我知道有一些人抱怨过这种默认行为,但要了解其背后的设计决策,您需要找到源代码。