这一章介绍wicket表单控件的简单应用
1、Label控件
这个应该说是最常用的控件了
html代码:
- < span wicket:id = "toDo" > </ span >
<span wicket:id="toDo"></span>
java代码:
- Label toDoLabel = new Label( "toDo" , new Model());
Label toDoLabel = new Label("toDo", new Model());
其中,Label这个控件有几个构造函数,后面的参数可以是String,也可以是Model。Model是用来存放这个控件的值的。如果不需要获取这个控件的值,只是需要给这个控件赋值的话,可以用String。如果需要获取这个控件的值,可以通过以下语句获取:
- toDoLabel.getDefaultModelObject();
toDoLabel.getDefaultModelObject();
或者也可以这样
- Model toDoModel = new Model();
- Label toDoLabel = new Label( "toDo" , toDoModel);
- Object obj = toDoModel.getObject();
Model toDoModel = new Model();
Label toDoLabel = new Label("toDo", toDoModel);
Object obj = toDoModel.getObject();
2、TextField控件:
html代码:
- < input type = "text" wicket:id = "entName" />
<input type="text" wicket:id="entName" />
java代码:
- Model entNameModel = new Model();
- TextField entNameText = new TextField( "entName" , entNameModel);
Model entNameModel = new Model();
TextField entNameText = new TextField("entName", entNameModel);
控件值的获取方式同上。
3、TextArea控件:
html代码:
- < textarea cols = "50" rows = "5" wicket:id = "linkAddress" > </ textarea >
<textarea cols="50" rows="5" wicket:id="linkAddress"></textarea>
java代码:
- Model linkAddressModel = new Model();
- TextArea linkAddressArea = new TextArea( "linkAddress" , linkAddressModel);
Model linkAddressModel = new Model();
TextArea linkAddressArea = new TextArea("linkAddress", linkAddressModel);
4、下拉框控件:
html代码:
- < select wicket:id = "status" > </ select >
<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);
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 ;
- }
- };
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 ;
- }
- };
- }