JSF页面.当弹出的dialog信息框中H:inputText验证未通过,再打开dialog,如果使这个dialog是初始无数据状态?
朝闻道 2011-12-28 02:56:55 JSF页面.当弹出的dialog信息框中H:inputText验证未通过,再打开dialog,如果使这个dialog是初始无数据状态?
流程是,但我点击button按钮,打开这个dialog页面,输入错误的信息,jsf会验证我的信息,并用h:message 输出验证信息.
这个时候,我关闭掉dialog,问题就来了.......
上次输入的错误信息仍然是存在的.
用JS脚本的确可以清空掉.但问题是如果dialog里有非常多的数据的话,这样说不可以的.公司我也问了下领导,领导不同意.我只能重新想法子.
现在我的目的就是想....能不能在点击弹出dialog的那个button的时候,让dialog重新初始化一次,或者说......重置这个dialog.
能不能在点击弹出dialog的那个button的时候,让dialog重新初始化一次,或者说......重置这个dialog.
或者,各位有什么比较好的解决方案?求赐教.
下面是代码片段:
弹出dialog 的btn的代码:
(oncomplete里的JQuery代码请无视吧.......领导不让这么写.)
<DIV align="center">
<h:panelGrid columns="10" id="penelGrid1"
columnClasses="column2,column2,column2,column2">
<p:commandButton title="第一个Dialog" value="第一个Dialog第一个Dialog"
oncomplete="firstDlgVar.show();$('#userNameId').val('');$('#realNameId').val('');" update="firstDlgId"
actionListener="#{dialogBean.onClear}"
image="ui-icon ui-icon-wrench">
</p:commandButton>
</h:panelGrid>
</DIV>
dialog的页面代码:
<div align="left">
<h:panelGrid id="firstDlgPanelGridId" width="290" columns="2">
<h:outputText value="UserName:" />
<p:inputText value="#{dialogBean.userName}" required="true"
label="UserName" id="userNameId"
validator="#{dialogBean.checkUserName}">
<f:validateLength maximum="5" minimum="3" for="userNameId" />
<p:ajax event="blur" update="userNameMessage" />
</p:inputText>
<p:message for="userNameId" id="userNameMessage" />
<h:outputText value="RealName:" />
<p:inputText value="#{dialogBean.realName}" required="true"
label="RealName" id="realNameId"
validator="#{dialogBean.checkRealName}">
<f:validateLength maximum="5" minimum="3" for="realNameId" />
<p:ajax event="blur" update="realNameMessage" />
</p:inputText>
<p:message for="realNameId" id="realNameMessage" />
</h:panelGrid>
</div>
Bean里倒没什么代码,除了报错的,就没啥了.
// 验证username重复性
public void checkUserName(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
String regex = "^[A-Za-z]+$"; // 正则表达式
if ("admin".equals(value.toString())) {
// 重复性验证
throw new ValidatorException(new FacesMessage(
FacesMessage.SEVERITY_ERROR, null, "后台验证:此用户名已经存在."));
} else if (!((value.toString()).matches(regex))) {
// 正则验证
throw new ValidatorException(new FacesMessage(
FacesMessage.SEVERITY_ERROR, null, "后台正则验证:此用户名必须为英文"));
} else {
}
}
求赐教!!!!!!!!!!!!!!!!!!!分不是问题啊啊啊啊啊!