gpt4 book ai didi

wicket - 在没有面板的情况下修改 Wicket FormComponent 标记?

转载 作者:行者123 更新时间:2023-12-02 09:55:54 25 4
gpt4 key购买 nike

在 Wicket 中,我想对 TextField 表单组件进行子类化,以在标签周围添加额外的标记。

为什么我不想创建面板:

1)我希望网页设计者使用输入标签: <input wicket:id="blah">

2) 我不希望子类丢失 Java 中的 FormField 语义,例如: field.setRequired(true);

我很乐意在 Java 中对包装标记进行硬编码。但我希望它的行为类似于 Java 中的 FormField。

有什么想法吗?四处寻找示例,但被这个难住了

编辑:我知道边框,但我对它们的问题是你必须将它们添加到标记和 Java 中。例如:

<div wicket:id="border">
<input type="text" wicket:id="field"/>
</div>

--

FormComponent<Integer> field = new TextField<Integer>("field", new Model(1));
field.setRequired(true);
Border border = new MyBorder("border");
border.add(field);
form.add(border);

这使得网页设计者必须了解特殊的标记,并且Java无法被封装(作为FormField子类)。

最佳答案

啊,这就是我想要通过 IBehavior 得到的:

我的包装器行为(抱歉 Scala 语法):

class FieldWrapper extends AbstractTransformerBehavior {
def transform(component: Component, output: CharSequence): CharSequence = """
<div class="blah">
Blah blah blah
%s
</div>
""".format(output)
}

我的子类:

class MyField[T](id: String, model: IModel[T]) extends TextField[T](id, model) {
add(new FieldWrapper)
}

原始标记:

<input type="text" wicket:id="foobar"/>

生成的标记:

<div class="blah">
Blah blah blah
<input type="text" value="" name="foobar" xmlns:wicket="http://wicket.apache.org">
</div>

谢谢 S.O.启动我的思维:-)

关于wicket - 在没有面板的情况下修改 Wicket FormComponent 标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6827710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com