Nano Hash - криптовалюты, майнинг, программирование

Получить значения класса из selectCheckboxMenu

У меня есть <p:selectCheckboxMenu>, и я хочу вернуть выбранные значения в компонент. Но значение, которое я получаю, когда выбираю элемент из меню, представляет собой строку, представляющую поле типа из CategorizationBean. Я просто хочу, когда я выбираю элемент из таблицы, чтобы получить всю структуру CategorizationBean в bean-компоненте.

Это фрагмент страницы xhtml:

<p:selectCheckboxMenu label="Categorization"  
                      value="#alertMB.selectedCategories}" 
                      converter="com.converter.CategoryConverter">

    <f:selectItems value="#{alertMB.categoryDomainEntry}"
                   var="category"
                   itemLabel="#{category.type}"
                   itemValue="#{category}"/> 
</p:selectCheckboxMenu>

Фрагмент из фасоли:

public List<CategorizationBean> getSelectedCategories() {
        return selectedCategories;
}

public void setSelectedCategories(List<CategorizationBean> selectedCategories) {
    this.selectedCategories = selectedCategories;
}

public class CategorizationBean implements Serializable{
    private String type;
    private long id;
25.02.2015

  • Как выглядит ваш преобразователь (com.converter.CategoryConverter)? Адекватно ли он принимает и возвращает правильный тип? (В этом выражении value="#alertMB.selectedCategories}" есть недопустимый синтаксис (отсутствует { после символа #). Я не стал считать это опечаткой). 25.02.2015
  • Это действительно опечатка. Преобразователь выглядит следующим образом: Переопределить общедоступный объект getAsObject(контекст FacesContext, компонент UIComponent, значение String) { //code } Переопределить общедоступный объект String getAsString(контекст FacesContext, компонент UIComponent, значение объекта) { return ((CategorizationBean)value).getType( ); Проблема в том, что если я изменю параметр значения функции getAsObject со String на CategorizationBean, я больше не смогу его переопределить. 25.02.2015
  • @AlexStratulat, пожалуйста, укажите свой конвертер в вопросе, и что именно не так с вашим конвертером? у вас какие-то ошибки или вы просто не можете понять почему не работает (по какой причине вы не знаете) 25.02.2015

Ответы:


1

Я думаю, что вы пропустили, используя список бобов, я использую этот пример, и он работает:

<p:selectCheckboxMenu id="slctRdBtn"
                                value="#{yourBean.compLovDtgrid}"
                                converter="compLovDtgridConverter">
                                <f:selectItems
                                    value="#{yourBean.listCompLovDtgrid}"
                                    var="rdbtn" itemLabel="#{rdbtn.vjlrLibelleRep}"
                                    itemValue="#{rdbtn}" />
                            </p:selectCheckboxMenu>

и для преобразователя:

@FacesConverter(forClass=CompLovDtgrid.class , value="compLovDtgridConverter")
public class CompLovDtgridConverter implements Converter{
@Override
public String getAsString(FacesContext context, UIComponent component, Object value)
{
    return (value instanceof CompLovDtgrid) ? ((CompLovDtgrid) value).getVjlrCodeRep() : null;
}
@Override
public Object getAsObject(FacesContext context, UIComponent component,String value)
{
    if(value == null)
        return null;

    YourBean data = context.getApplication().evaluateExpressionGet(context, "#{yourBean}", YourBean.class);

    for(CompLovDtgrid compLovDtgrid : data.getListCompLovDtgrid())
    {
        if(compLovDtgrid.getVjlrCodeRep().equals(value))
            return compLovDtgrid;
    }

    throw new ConverterException(new FacesMessage(String.format("Cannot convert %s to CompLovDtgrid", value)));
}

}

и для списка я использую:

public List<CompLovDtgrid> getListCompLovDtgrid() 
    {
        return listCompLovDtgrid;
    }

    public void setListCompLovDtgrid(List<CompLovDtgrid> listCompLovDtgrid) {
        this.listCompLovDtgrid = listCompLovDtgrid;
    }
25.02.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..