我想在数据表中编辑我的行,但我遇到了问题。我有一个验证器,它检查数据库中是否有社会安全号码。当我添加一切正常。我在编辑时会出现问题。以下是我的编辑页面中的代码片段:
<h:form>
<div id="userPanel">
<p:panel id="panelUser" header="Edytuj administratora" >
<div id="panelImage">
<img src="./../../images/person4.png" alt="person" width="150px" height="130px"/>
</div>
<h:inputHidden value="#{userMB.user.id}" />
<h:panelGrid columns="3">
<p:outputLabel for="firstName" value="#{msg.firstName}"></p:outputLabel>
<p:inputText id="firstName" value="#{userMB.user.firstName}" label="#{msg.firstName}" required="true">
<f:validator validatorId="firstNameValidator" />
<p:ajax update="msgFristName" event="keyup" />
</p:inputText>
<p:message for="firstName" id="msgFristName"/>
<p:outputLabel for="lastName" value="#{msg.lastName}"></p:outputLabel>
<p:inputText id="lastName" value="#{userMB.user.lastName}" label="#{msg.lastName}" required="true">
<f:validator validatorId="lastNameValidator" />
<p:ajax update="msgLastName" event="keyup" />
</p:inputText>
<p:message for="lastName" id="msgLastName"/>
<p:outputLabel for="personalId" value="#{msg.personalId}"></p:outputLabel>
<p:inputText id="personalId" value="#{userMB.user.personalId}" label="#{msg.personalId}" required="true">
<f:validator binding="#{personalIdValidator}" />
<p:ajax update="msgPersonalId" event="keyup" />
</p:inputText>
<p:message for="personalId" id="msgPersonalId"/>
<p:outputLabel for="password" value="#{msg.password}"></p:outputLabel>
<p:inputText id="password" value="#{userMB.user.password}" label="#{msg.password}" required="true">
<f:validator validatorId="passwordValidator" />
<f:attribute name="confirmPassword" value="#{confirmPassword}" />
<p:ajax update="msgPassword" event="keyup" />
</p:inputText>
<p:message for="password" id="msgPassword"/>
<p:outputLabel for="confirmPassword" value="#{msg.confirmPassword}"></p:outputLabel>
<p:inputText id="confirmPassword" binding="#{confirmPassword}" label="#{msg.confirmPassword}" required="true">
<f:validator validatorId="passwordValidator" />
<f:attribute name="confirmPassword" value="#{confirmPassword}" />
<p:ajax update="msgConfirmPassword" event="keyup" />
</p:inputText>
<p:message for="confirmPassword" id="msgConfirmPassword"/>
</h:panelGrid>
<center><p:commandButton value="#{msg.edit}" action="#{userMB.editUser()}" ajax="false">
<f:param name="userRole" value="admin" />
<f:param name="active" value="true" />
</p:commandButton>
<p:commandButton value="#{msg.cancel}" action="#{userMB.cancel()}" ajax="false" immediate="true"/></center>
</p:panel>
</div>
</h:form>
当我想编辑用户时,我单击按钮:
<center><p:commandButton value="#{msg.edit}" action="#{userMB.editUser()}" ajax="false">
它调用方法editUser
:
public String editUser() {
FacesContext context = FacesContext.getCurrentInstance();
Map requestParameterMap = (Map) context.getExternalContext().getRequestParameterMap();
try {
String userRole = requestParameterMap.get("userRole").toString();
String active = requestParameterMap.get("active").toString();
Boolean act = Boolean.parseBoolean(active);
user.setRole(userRole);
user.setActive(act);
if ((user.getEmail() != null) && (userDao.findEmailExist(user.getEmail()))) {
sendErrorMessageToUser("Użytkownik z podanym adresem email istnieje w bazie");
return null;
} else if ((user.getPersonalId() != null) && (userDao.findPersonalIdExist(user.getPersonalId()))) {
sendErrorMessageToUser("Użytkownik z podanym numerem pesel istnieje w bazie");
return null;
} else if ((user.getPhone() != null) && (userDao.findPhoneExist(user.getPhone()))) {
sendErrorMessageToUser("Użytkownik z podanym numerem telefonu istnieje w bazie");
return null;
} else {
userDao.update(user);
}
} catch (EJBException e) {
sendErrorMessageToUser("Błąd edycji użytkownika w bazie");
return null;
}
sendInfoMessageToUser("Konto zedytowane");
return user.getRole() + "List";
}
方法find personalIdExist在找到编辑过程中给出的personalId时返回true,如果没有找到它返回false。
这是我的问题。当我编辑User
我的编辑页面时,如下所示: 示例:
名字:巴勃罗
姓氏:ABCD
个人编号:12345678901
密码:zxcv
当我编辑我的personalId时,一切都很好,但我只能编辑firstName
,lastName
而password
不能personalId
。PersonalId
可能是一样的。当我单击编辑时出现问题,因为如果 id 已经存在并且我无法更新我的用户,我的方法personalIdExist
将返回。true
我需要在某个地方保存该用户的初始值personalId,以便能够对其进行编辑。但不知道如何。