2016-03-17 1 views
1

Я хочу загрузить буксировочные элементы selectOneMenu, но только с одним выбором из базы данных.Загрузите перфорирование буксировки динамический selectOneMenu с @OneToMany отношение

Класс Страна:

@Entity 
@Table(name = "COUNTRY") 
public class Country implements Serializable{ 


private static final long serialVersionUID = -2160543740997716714L; 


@Id 
@Column(name = "ID_COUNTRY") 
private Long idTCountry; 

@Column(name = "LIBELLE_COUNTRY") 
private String libelleCountry; 


@OneToMany(mappedBy="country") 
    private List<City> Cities; 

Class Город

@Entity 
@Table(name = "CITY") 
public class City implements Serializable{ 

private static final long serialVersionUID = -1617401771255693322L; 

@Id 
@Column(name = "ID_CITY") 
private Long idCity; 

@ManyToOne 
@JoinColumn(name="COUNTRY") 
private Country country; 

@Column(name = "LIBELLE") 
private String libelle; 

Что делать в XHTML, чтобы загрузить эти буксировочный selectOneMenu динамически?

Я сделал это, но это didin't работы:

 <p:outputLabel for="country" value="Country: " /> 
     <p:selectOneMenu id="country" value="#{countryView.selectedCountry}" style="width:150px"> 
      <p:ajax listener="#{countryView.onTypeChange}" update="city" /> 
      <f:selectItems value="#{countryView.countries}" itemLabel="#{selectedType.libelleCountry}" var="selectedCountry" /> 
     </p:selectOneMenu> 

     <p:outputLabel for="city" value="City: " /> 
     <p:selectOneMenu id="city" value="#{countryView.selectedCity}" style="width:150px"> 
      <f:selectItems value="#{countryView.selectedCountry.cities}" itemLabel="#{selectedCity.libelle}" var="selectedCity" itemValue="#{selectedCity}"/> 
     </p:selectOneMenu> 

Может ли один помочь мне сделать это, пожалуйста?

+0

В java все объекты загружены правильно, а в xhtml список загружен (selectOneMenu) стран, но список городов всегда пуст. Я думаю, что я должен изменить свойства selectOneMenu города в XHTML, но я не знаю, как это сделать. – GITOS

+0

для части Primefaces просто возьмите код из витрины Primefaces (если вы еще не сделали этого): http://www.primefaces.org/showcase/ui/ajax/dropdown.xhtml. Для части JPA, вы уверены, что города инициализированы (по умолчанию коллекции собираются с леними, по крайней мере, с гибернацией) –

+0

, чтобы помочь вам, нам нужен ваш код бэкбона (countryView) –

ответ

0

Да Рафаэль Рот я должен сделать это:

@OneToMany(fetch = FetchType.EAGER, mappedBy="country", cascade = CascadeType.ALL) 
private List<City> cities; 

И, конечно, я должен добавить конвертеры также:

<p:outputLabel for="city" value="City: " /> 
    <p:selectOneMenu id="city" value="#{countryView.selectedCity}" style="width:150px" converter="#{cityConverter}"> 
     <f:selectItems value="#{countryView.selectedCountry.cities}" itemLabel="#{selectedCity.libelle}" var="selectedCity" itemValue="#{selectedCity}"/> 
    </p:selectOneMenu> 

И, как вы видите, я не нужен слушателя в событии ajax:

<p:ajax update="city" /> 
Смежные вопросы