Как получить доступ к выбранной метке и выбранному описанию в jsf selectOneMenu, где selectOneMenu связан с объектами javax.faces.model.SelectItem? - PullRequest
1 голос
/ 06 октября 2011

Это для JSF 2.0 (Обратите внимание - это реализация mojerra, и я не использую Icefaces, myfaces и т. Д.)

Предположим, у меня просто есть раскрывающийся список в моей форме, и раскрывающийся список привязан к списку объектов SelectItems, в котором хранятся значение, метка и описание.

В моем событии actionlistener изменения значения, как я могу получить доступ к выбранному значению, метке и описанию. Я могу получить доступ только к выбранному значению?

Пример кода-

В моем xhtml - выпадающий список -

<h:selectOneMenu onchange="submit()" valueChangeListener="#{person.changeDD}" value="#{person.selectedValue}">
    <f:selectItems value="#{person.lists}"></f:selectItems>
</h:selectOneMenu>

где человек - имя боба

ModelBean-

@ManagedBean(name="person")
@SessionScoped
public class PersonBean implements Serializable{

private String selectedValue;

private List<SelectItem> lists=new ArrayList<SelectItem>(); 
public PersonBean() {
        lists=new ArrayList<SelectItem>();
        lists.add(new SelectItem("1","India","desc1"));
        lists.add(new SelectItem("2","canada","desc2"));
        lists.add(new SelectItem("3","america","desc3"));
    }
//getters and setters


public void changeDD(ValueChangeEvent vce) throws IOException{
        System.out.println("in value change");
        System.out.println("New value-->"+vce.getNewValue().toString());
//I have access only to the selected value and not to the description and label

    }
}   

Пожалуйста, помогите

Ответы [ 3 ]

3 голосов
/ 06 октября 2011

В моем событии actionlistener изменения значения, как я могу получить доступ к выбранному значению, метке и описанию.Я могу получить доступ только к выбранному значению?

Это действительно только то, что было отправлено элементом HTML <select>.Вам необходимо сохранить сопоставление доступных значений и SelectItem s самостоятельно.

@ManagedBean(name="person")
@SessionScoped
public class PersonBean implements Serializable {

    private String selectedValue;
    private Map<String, SelectItem> availableValues;
    private List<SelectItem> lists; 

    public PersonBean() {
        availableValues = new LinkedHashMap<String, SelectItem>();
        availableValues.put("1", new SelectItem("1", "India", "desc1"));
        availableValues.put("2", new SelectItem("2", "canada", "desc2"));
        availableValues.put("3", new SelectItem("3", "america", "desc3"));
        lists = new ArrayList<SelectItem>(availableValues.values());
    }

    public void changeDD(ValueChangeEvent event) {
        String selectedValue = (String) event.getNewValue();
        SelectItem selectedItem = availableItems.get(newValue);
        // ...
    }

}
0 голосов
/ 06 октября 2011

Лучшим способом было бы использовать пользовательские объекты в качестве значений для элементов SelectItems и реализовать для них пользовательский преобразователь:
http://balusc.blogspot.com/2007/09/objects-in-hselectonemenu.html

В JSF 2 вы можете легко реализовать пользовательские преобразователи, например:http://www.mkyong.com/jsf2/custom-converter-in-jsf-2-0/

0 голосов
/ 06 октября 2011

Вы можете сделать это, имея переменные для них и создавая методы получения и установки для переменных

в вашем бобе, например. для описания создайте в своем бобе

  private String description;

  public String getDescription(){
       return description;
  }

  public void setDescription(String desc){
       description = desc;
  }

и аналогично для любой переменной.

Извините, что неправильно понял

вы можете сделать

//String selectedvalue
SelectItem selectedValue;//create getters setter
public void changeDD(ValueChangeEvent vce) throws IOException{
    System.out.println("in value change");
    System.out.println("New value-->"+vce.getNewValue().toString());
    String description = selectedValue.getDescription();

}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...