Wicket组件 - 每次都必须添加()?

Sea*_*ean 2 wicket

我试图使用wicket构建一个简单的应用程序,到目前为止印象深刻.我一直在利用Component类来根据用户输入或模型确定页面上元素的行为.我看到组件模型与JSF的相似之处,但发现wicket生命周期更容易管理.

我无法理解的是必须为每个检票口添加每个组件:在页面上提到的id,特别是对于没有任何子项的人.当树已经在标记中稍微定义时,必须在java代码中构建树似乎很重要.我错过了什么?

编辑

我应该举一个例子.我有一个输入框的标签,在某些情况下我希望能够修改.95%的时间我对标记中的标签的文本和属性都没有问题.

tet*_*suo 8

简答:是的,你必须添加它们.

答案很长:您可以创建自定义代码来执行此操作,但我怀疑这是值得的.

使用JSF,您使用非html标记,其中有一个与之关联的组件类型 - 例如,h:inputText对应于类HtmlInputText- ,因此它知道要实例化的类.

使用Wicket时,HTML文件仅包含(除少数例外)HTML标记,并且您必须为wicket:id添加到标记的每个标记标记实例化具体组件,因为它无法确定是否<span wicket:id='xyz'>意味着a Label,a FeedbackPanel,一个WebMarkupContainer或一些自定义组件.

使用JSF,您可以在标记中使用Wicket,使用Java代码,即构建组件树,将组件绑定到属性以及处理事件.它将所有内容保存在一个文件中(您不必为每个模板文件创建一个类),这有很多很多缺点(有些可能认为它有一些专业,我离题).

您的页面绝不仅仅是一个什么也不做的简单形式.您想要转换和验证输入,您想要处理提交,您想要使用Ajax更新组件.使用JSF,您可以在(不可编译,类型不安全,不良加工,不可重构)模板中执行所有操作,使其与表达式,配置标记和 - 禁止 - 业务逻辑一起变得臃肿.

如果Wicket对此有支持(并且,就此而言,它具有您自己构建此附加组件所需的灵活性),则必须添加大量额外注释(特殊,非标准标记和属性)到标记,声明要实例化的类,要更新的模型,要执行的验证等,损害框架的两个美观,干净的HTML模板以及视觉和逻辑之间的明确分离.

一个试图在模板中做更多事情的框架,虽然比JSF(不是那么难)仍然不那么臃肿,但却是Apache Tapestry.但正如在其教程中可以看到的那样,您仍然必须使用非标准标签并遵循任意约定将模板绑定到代码(您可能会喜欢它,但如果是这种情况,您有baaad品味,抱歉: P).