wicket基础应用(2)--wicket表单控件的使用

该文可以转载,但转载必须注明作者,出处: 
作者:lhx1026 

出处:http://lhx1026.iteye.com

这一章介绍wicket表单控件的简单应用 

1、Label控件 

这个应该说是最常用的控件了 

html代码: 

<span wicket:id="toDo"></span>

java代码:

Label toDoLabel = new Label("toDo", new Model());

其中,Label这个控件有几个构造函数,后面的参数可以是String,也可以是Model。Model是用来存放这个控件的值的。如果不需要获取这个控件的值,只是需要给这个控件赋值的话,可以用String。如果需要获取这个控件的值,可以通过以下语句获取: 

toDoLabel.getDefaultModelObject();

或者也可以这样 

Model toDoModel = new Model();
Label toDoLabel = new Label("toDo", toDoModel);

Object obj = toDoModel.getObject();

2、TextField控件:

html代码:

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

java代码: 

Model entNameModel = new Model();
TextField entNameText = new TextField("entName", entNameModel);

控件值的获取方式同上。 

3、TextArea控件: 

html代码: 

<textarea cols="50" rows="5" wicket:id="linkAddress"></textarea>

java代码:

Model linkAddressModel = new Model();
TextArea linkAddressArea = new TextArea("linkAddress", linkAddressModel);

4、下拉框控件:

html代码:

<select wicket:id="status"> </select>

java代码: 

        List<Integer> statusList = Arrays.asList(new Integer[] { 1, 2 });
        final HashMap<Integer, String> statusMap = new HashMap<Integer, String>();
        statusMap.put(new Integer(1), "有效");
        statusMap.put(new Integer(2), "暂停");
        IChoiceRenderer statusRenderer = new ChoiceRenderer() {
            @Override
            public Object getDisplayValue(Object object) {
                return statusMap.get(object);
            }
        };
        DropDownChoice statusChoice = new DropDownChoice("status", statusModel, statusList, statusRenderer);

其中,IChoiceRenderer的母的是为了将在字面上面显示的字符串跟stausMap中的值对应起来。这样的代码实例化的时候,下拉框会出现一个默认的选项:"请选择"。如果不想出现这个选项,在实例化DropDownChoice的时候,可以这样做: 

DropDownChoice statusChoice = new DropDownChoice("status", statusModel, statusList, statusRenderer){
    @Override
    public String getDefaultValue() {
    return null;
    }
};

或者不想出现“请选择”,而是“全部”,可以这样写一个方法: 

    /**
     * 根据传入的参数得到一个下拉框
     * 
     * @param id
     * @param model
     * @param list
     * @param renderer
     * @param choice
     *            默认值,比如下拉框的第一个值为"请选择"
     * @return
     */
    private DropDownChoice getDownChoice(String id, Model model, List list, IChoiceRenderer renderer, final String choice) {
        return new DropDownChoice(id, model, list, renderer) {
            @Override
            protected CharSequence getDefaultChoice(Object arg0) {
                if (choice != null) {
                    return new AppendingStringBuffer("
<option selected="selected" value="">").append(choice).append("</option>");
                } else
                    return null;
            }
        };
    }

5、按钮 

 <input type="submit"  wicket:id="addSpNum" value="保存"  />
Button addSpNumButton = new Button("addSpNum"){
    @Override
    public void onSubmit() {
        System.out.println("这里时点击按钮时触发的事件!");
    }
};

如果这个按钮是在表单中,则点击这个按钮会先触发表单的onSubmit()事件,然后再触发按钮本身的onSubmit()事件。如果不想触发表单的onSubmit()事件,则可以用下面的语句: 

addSpNumButton.setDefaultFormProcessing(false);

6、链接 

<a wicket:id="more">more</a>

普通链接 

Link moreLink = new Link("more") {

            @Override
            public void onClick() {
                System.out.println("这里是点击链接触发的事件");
            }

        };

Ajax链接 

        AjaxLink moreLink = new AjaxLink("more") {

            @Override
            public void onClick(AjaxRequestTarget target) {
                morePanel.setVisible(true);
                target.addComponent(morePanel2);
            }

        };

注意:这里如果是Ajax链接,那么如果要点击这个链接使其他的控件发生变化的时候,target.addComponent(...)这个方法里面要添加的控件,必须是你要改变的控件的父控件。 

呵呵,这些最常用的控件就介绍到这里了,这些控件还有其他的使用方法,以后熟悉的话就知道了。

原文地址:https://www.cnblogs.com/shanheyongmu/p/5289355.html