充分利用fragment标签,划分不同条件下的fragment。
html文件如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<body>
<div class="alert alert-info">当前位置<b class="tip"/>用户管理<b class="tip"/>用户详细信息</div>
<form method="post" wicket:id="userForm">
<span wicket:id="feedback"/>
<table class="table table-striped table-bordered table-condensed">
<thead>
<tr>
<td colspan="6" class="auto-style2"> 用户详细信息 <i class="tip-up"></i></td>
</tr>
</thead>
<!--<div wicket:id="errors"><i class="icon-remove close" data-dismiss="alert"></i></div>-->
<tbody>
<tr>
<td class="tdl">姓名</td>
<td class="detail">
<input class="ipt" wicket:id="name"/>
</td>
<td class="tdl">登录名</td>
<td class="td_detail">
<input class="ipt" wicket:id="loginName"/>
</td>
<td class="tdl">邮箱</td>
<td class="td_detail">
<input class="ipt" wicket:id="email"/>
</td>
</tr>
<tr>
<td class="tdl">电话</td>
<td class="detail">
<input class="ipt" wicket:id="phone"/>
</td>
<td class="tdl">手机</td>
<td class="td_detail">
<input class="ipt" wicket:id="mobile"/>
</td>
<!--<td class="tdl">所属企业</td>
<td class="detail">
<input wicket:id="qyid" type="hidden"
style="width: 300px;"/>
</td>-->
<td class="tdl">归属机构</td>
<td class="detail">
<input wicket:id="jgdm" type="hidden"
style="width: 300px;"/>
</td>
</tr>
<div wicket:id="pwdContainer"></div>
<tr>
<td class="tdl">角色</td>
<td class="td_detail">
<div wicket:id="roleList">角色列表</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-striped table-bordered table-condensed">
<tr>
<td colspan="6" align="right">
<input class="btn btn-inverse" type="button" value="保存" wicket:id="save"/>
<input class="btn btn-inverse" type="button" value="关闭" wicket:id="cancel"/>
</td>
</tr>
</table>
</form>
</body>
</wicket:panel>
<wicket:fragment wicket:id="hiddenFragment">
<input class="ipt" wicket:id="password" type="hidden"/>
</wicket:fragment>
<wicket:fragment wicket:id="pwdFragment">
<tr>
<td class="tdl">密码</td>
<td class="td_detail">
<input class="ipt" wicket:id="password" type="password"/>
</td>
<td class="tdl">确认密码</td>
<td class="detail">
<input class="ipt" wicket:id="confirPwd" type="password"/>
</td>
</tr>
</wicket:fragment>
</html>
页面上有2个不同的fragment,根据条件不同显示,代码如下:
private class HIddenFragment extends Fragment {
public HIddenFragment(String id, String markupId, MarkupContainer markupProvider) {
super(id, markupId, markupProvider);
HiddenField pwd = new HiddenField<String>("password");
add(pwd);
}
}
private class PwdFragment extends Fragment {
public PwdFragment(String id, String markupId, MarkupContainer markupProvider) {
super(id, markupId, markupProvider);
pwd = new PasswordTextField("password");
pwdConfirm = new PasswordTextField("confirPwd", new PropertyModel(UserAddPage.this, "confirPwd"));
pwd.setLabel(Model.of("'密码'"));
add(pwd.setOutputMarkupId(true).add(new ValidationStyleBehavior()));
pwdConfirm.setLabel(Model.of("'确认密码'"));
add(pwdConfirm).setOutputMarkupId(true);
}
}
显示条件的代码如下:
if(isAdd){
userForm.add(new PwdFragment("pwdContainer","pwdFragment",UserAddPage.this));
//密码相同的校验
EqualPasswordInputValidator equalPasswordInputValidator = new EqualPasswordInputValidator(pwd, pwdConfirm);
userForm.add(equalPasswordInputValidator);
}
else{
userForm.add(new HIddenFragment("pwdContainer","hiddenFragment",UserAddPage.this));
}