Я пишу простое приложение JSF, которое должно реализовывать операции CRUD в базе данных. В принципе, это приложение для управления вакансиями, которое позволяет кандидатам подать заявку на работу. Чтобы упростить задачу, предположу, что у меня есть следующие базы данных:h: selectOneMenu не позволяет использовать метод действия bean-объекта
Users
------------
Id
Name
Address
CityId
Cities
-------------
Id
City
Я использую упорство и два зерна реализовано: CityBean и UsersBean. CityBean выглядит следующим образом:
@ManagedBean
@SessionScoped
public class CityBean implements Serializable
{
private static final long serialVersionUID = 1L;
private List<City> cityList = new ArrayList<City>();
public CityBean()
{
cityList.addAll(database.getInstance().getCities());
}
///removed for simplicity
}
Мой UsersBean выглядит следующим образом:
@ManagedBean
@SessionScoped
public class UsersBean implements Serializable
{
private static final long serialVersionUID = 1L;
public User user = new User();
public String addUser(){
database.getInstance().addUser(user);
return "";
}
}
Наконец, моя страница XHTML имеет следующую структуру:
<h:form>
<h:outputText value="${texts.name}" />
<h:inputText id="inputName" value="#{usersBean.user.name}" styleClass="tb5" autocomplete="off">
</h:inputText>
<h:inputText id="inputSurname" value="#{usersBean.user.surname}" styleClass="tb5" autocomplete="off">
</h:inputText>
<h:selectOneMenu value="#{cityBean.cityList}">
<f:selectItems value="#{cityBean.cityList}" var="c" itemValue="#{c.id}" itemLabel="#{c.name}"></f:selectItems>
</h:selectOneMenu>
<h:commandButton value="${texts.save}" styleClass="button" action="#{usersBean.addUser}">
</h:commandButton>
</h:form>
страница XHTML генерирует правильно. Выпадающий список заполнен элементами из таблицы «Города», а значение каждого города - это идентификатор города. Однако вставка не выполняется без ошибки (в базу данных ничего не вставлено).
С другой стороны, если я прокомментирую элемент (удаление выпадающего списка из представления), пользователь будет вставлен в базу данных со значением NULL для CityId.
Я начинающий программист в JSF, это мой первый проект. У меня большой опыт работы в .NET и PHP, и я был бы признателен, если бы вы могли указать мне, что я делаю неправильно с этим подходом, который я принимаю.
Edit (объект пользователя):
@Entity
public class Wine implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private long id;
private String name;
private String surname;
private String address;
private int cityId;
//Constructor left out (an empty and another with parameters)
//Get/Set methods left out
}
Не могли бы вы вставить в свой вопрос 'User' entity bean исходный код? Атрибут 'value' неверен в h: selectOneMenu, но мне нужен исходный код объекта для определения ответа. – lametaweb
Я добавил объект пользователя. – user496607
Что вы используете для сохранения своих сущностей, JPA/Hibernate? – lametaweb