我正在從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驗證器警告顯示出來,但這只是在沒有修復它的地毯上刷新問題。
有沒有人有線索我能做些什麼來解決這個問題?