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("\n<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(...)这个方法里面要添加的控件,必须是你要改变的控件的父控件。

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

你可能感兴趣的:(java,html,Ajax,wicket)