В настоящее время я изучаю Java EE с использованием JBoss, и я застрял в одной простой проблеме.Хотя это должно быть распространенным явлением, я не нашел решения в Интернете.
Я хочу отобразить список контактов, и если контакт выбран, открывается страница сведений и информация о контакте может быть отредактирована.
Контакт является организацией JPA.Создание новых контактов и отображение списка контактов и страницы сведений работает нормально.Однако у меня возникают проблемы при обновлении контактной информации.
Если щелкнуть контакт, я открываю страницу сведений и передаю идентификатор в качестве параметра get.Теперь выполняется следующий код JSF:
<f:metadata>
<f:viewParam name="contactID" value="#{contactUpdate.contactID}" />
</f:metadata>
<h:form>
<h:outputLabel for="firstName" value="First Name:" />
<h:inputText id="firstName" value="#{contactUpdate.contact.firstName}" />
<h:commandButton id="register" action="#{contactUpdate.updateContact()}" value="Update" />
</h:form>
Это боб (удален метод получения и установки):
@Stateful
@Named
@RequestScoped
public class ContactUpdate {
@Inject
private EntityManager em;
private Contact contact;
private long contactID;
public void updateContact(){
EntityTransaction transaction = em.getTransaction();
transaction.begin();
transaction.commit();
}
public void setContactID(long contactID) {
this.contactID = contactID;
setContact(em.find(Contact.class, contactID));
}
}
Если я обновлю его, контакт будет null
.Я предполагаю, что область запроса слишком коротка и уже очищена.Можно ли установить contactID
при коммите?
Я думал, что можно будет также использовать @ViewScoped
, но при этом <f:viewParam>
больше не работает.