我正在从ICEfaces的1.8升级的应用程序ICEfaces的3.3“无法验证组件与空值”的警告时,HtmlInputText组件不是空
运行于8.5,ICEfaces的3.3(JSF 2.1 - MyFaces的2.1.17 )
我有一个弹出框用于创建新用户。
<f:facet name="body">
<ice:panelGrid columns="3">
<ice:outputText value="User Id"></ice:outputText>
<ice:inputText id="CreateNewUserPopUp-UserId" binding="#{menuBean.userPanel.userN}" action="#{menuBean.userPanel.checkUserId}"
disabled="#{menuBean.userPanel.validUserId and !menuBean.userPanel.userIdExists}" maxlength="30" value="#{menuBean.userPanel.userN}">
</ice:inputText>
<ice:message for="CreateNewUserPopUp-UserId" id="CreateNewUserPopUp-UserIdMessage" style="color: Red; font-style: italic; font-size: 12px;"/>
<ice:outputText value="User Name"></ice:outputText>
<ice:inputText id="CreateNewUserPopUp-UserName" binding="#{menuBean.userPanel.userNameT}"
disabled="#{!menuBean.userPanel.validUserId or (menuBean.userPanel.validUserId and menuBean.userPanel.userIdExists)}"
style="width:300px" maxlength="30">
</ice:inputText>
<ice:message for="CreateNewUserPopUp-UserName" id="CreateNewUserPopUp-UserNameMessage" style="color: Red; font-style: italic; font-size: 12px;"/>
...
...
</ice:panelGrid>
</f:facet>
它必然的HtmlInputText组件为用户N和userNameT:
private HtmlInputText userN;
private HtmlInputText userNameT
当呈现的弹出框,所有字段被初始化,并要求重点用户ID输入框
public void clearNewUser()
{
setValidUserId(false);
setUserIdExists(false);
getUserN().setValue("");
getUserNameT().resetValue();
...
...
getUserN().requestFocus();
}
如果我在用户N盒上按ENTER键,那么将执行验证码。
public void checkUserId()
{
...
...
if (getUserN().getValue().toString().trim().length() < 1)
{
setMessage("User Id required");
}
else
{
DtcUsersTable dtcUsersTable = usersTableService.findById(getUserN().getValue().toString().toLowerCase());
if (dtcUsersTable != null)
{
setValidUserId(true);
setUserIdExists(true);
setMessage("User Already Exists");
}
else
{
setValidUserId(true);
setUserIdExists(false);
getUserNameT().requestFocus();
setMessage("Please Enter User Details");
}
}
}
如果输入框是空的,我的警告信息,提醒用户正确显示说明“用户ID需要”。
如果我填充框并按ENTER键,我的所有处理都会正确完成,输入框会被验证和禁用,因此用户标识无法编辑后验证,并且用户名称输入框被选为新的焦点。 然后显示在控制台日志消息指出:如果我离开的用户名框为空和选项卡通过其他所需资料盒
000001a1 BeanValidator W cannot validate component with empty value: APP:CreateNewUserPopUp-UserId
,那么就没有显示控制台消息,但如果我填充用户名输入框,然后我每次切换输入框时,我得到的控制台消息:
0000019d BeanValidator W cannot validate component with empty value: APP:CreateNewUserPopUp-UserName
我曾尝试在网上搜索,并一直未能找到别人有同样的问题。我唯一能想到的就是改变日志级别以防止bean验证器警告显示出来,但这只是在没有修复它的地毯上刷新问题。
有没有人有线索我能做些什么来解决这个问题?