首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建Wicket组件嵌入Textfield及其FeedbackPanel

创建Wicket组件嵌入Textfield及其FeedbackPanel
EN

Stack Overflow用户
提问于 2014-06-18 16:14:48
回答 1查看 625关注 0票数 1

我写这段代码:

Java文件:

代码语言:javascript
复制
TextField<String> input1 = (TextField<String>) new TextField<>("input1", Model.of("")).add(new UrlValidator());
TextField<String> input2 = (TextField<String>) new TextField<>("input2", Model.of("")).add(new UrlValidator());
add(new Form<>("form").add(
    new FeedbackPanel("feedbackInput1").setFilter(new ComponentFeedbackMessageFilter(input1)),
    new FeedbackPanel("feedbackInput2").setFilter(new ComponentFeedbackMessageFilter(input2)),
    input1,
    input2
));

模板文件:

代码语言:javascript
复制
<form wicket:id="form">
    <!-- first -->
    <div>
        <wicket:panel wicket:id="feedbackInput1" />
        <label for="input1">Input 1:
            <input type="text" wicket:id="input1" id="input1" />
        </label>
    </div>
    <!-- second -->
    <div>
        <wicket:panel wicket:id="feedbackInput2" />
        <label for="input2">Input 2: 
            <input type="text" wicket:id="input2" id="input2" />
        </label>
    </div>

        <div>
            <button type="submit">Submit</button>
        </div>
    </form>

为了避免冗余,我想创建一个组件(例如: TextFieldWithFeedback),我可以这样使用:

Java文件:

代码语言:javascript
复制
TextField<String> input1 = (TextField<String>) new TextField<>("input1", Model.of("")).add(new UrlValidator());
TextField<String> input2 = (TextField<String>) new TextField<>("input2", Model.of("")).add(new UrlValidator());
add(new Form<>("form").add(
    new TextFieldWithFeedback("input1", "Input 1: ", input1),
    new TextFieldWithFeedback("input2", "Input 2: ", input2)
));

模板文件:

代码语言:javascript
复制
<form wicket:id="form">
    <!-- first -->
    <div wicket:id="input1" />
    <!-- second -->
    <div wicket:id="input2" />
</form>

我想创建一个Wicket组件来管理一个TextField及其feedbackPanel,我该如何做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 07:10:03

查找FormComponent类。你可以这样做:

代码语言:javascript
复制
public class FeedbackTextField<T> extends FormComponent<T> {

    public FeedbackTextField(String id) {
         this(id, null);
    }

    public FeedbackTextField(String id, IModel<T> model) {
         super(id, model);

         TextField<T> tf = new TextField<T>("tx");
         add(tf);
         add(new FeedbackPanel("fb").setFilter(new ComponentFeedbackMessageFilter(tf))); 
    }
}

FormComponent的工作方式类似于一个面板,因此您也需要为该类添加自己的html文件。然后可以将此组件添加到窗体中。

代码语言:javascript
复制
form.add(new FeedbackTextField<String>("input1", Model.of("")));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24290449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档