我遇到一个问题,无法对 JSF 表单的任何字段执行第二次连续更新。表单最初加载时默认禁用所有字段。表单底部有一个“修改”按钮,单击该按钮后,我可以编辑任何字段。但是,正如我提到的,第一次更新工作正常,但后续更新会失败,除非我离开该页面然后返回。
这是我的控制器的一部分,我称之为
update
。这是触发更新操作的地方:
@Override
public Personne modifierPersonne(Personne Personne, Adresse adresse) throws GererPersonneControllerException {
verifierExistancePersonne(Personne);
List<Adresse> adresses = Personne.getAdresses();
if (adresse.getId() != null) {
List<Long> ids = adresses.stream().map(Adresse::getId).collect(Collectors.toList());
int index = ids.indexOf(adresse.getId());
adresses.set(index, adresse);
Personne.setAdresses(adresses);
} else {
AdresseDedale adresseDedale = new AdresseDedale();
adresseDedale.setRue(adresse.getRue());
adresseDedale.setCommune(adresse.getCommune());
adresseDedale.setCodePostal(adresse.getCodePostal());
adresse.setTypeAdresse(TYPE_ADRESSE.RESIDENCE.getCode());
adresse.setAdresseDedale(adresseDedale);
List<Adresse> adresses1 = new ArrayList<>();
Adresse adresseTosave = adresseDap.create(adresse);
adresses1.add(adresseTosave);
Personne = PersonneDap.find(Personne.getId());
Personne.setAdresses(adresses1);
}
try {
return PersonneDap.update(Personne);
} catch (PersistenceException e) {
logException(e);
}
}
这是负责执行更新的代码:
@Transactional(Transactional.TxType.REQUIRED)
public T update(T entity) {
return entityManager.merge(entity);
}
合并后尝试
entityManager.flush()
。