WedX - журнал о программировании и компьютерных науках

Расширения DynaForm Primefaces собирают отправленные данные

Я использую DynaForm в расширениях Primefaces. Я сгенерировал динамическую форму, но проблема в том, как восстановить отправленные данные из контроллера.

Вот как я генерирую свою форму:

это сторона контроллера

    model = new DynaFormModel();  

    DynaFormRow row;

    allfieldMessageList=getAllfieldMessageList();

    for(FilledMessageField f:allfieldMessageList)
    {
        // 1. row  
        row = model.createRegularRow();  
        FilledMessageField fmf=new FilledMessageField();
        DynaFormLabel label11 = row.addLabel(fmf.getField().getName());  
        DynaFormControl control12 = row.addControl(fmf, "input");  
        label11.setForControl(control12);  
    }

а это сторона веб-страницы:

<h:form id="addMessageIDForm" rendered="true">
        <pe:dynaForm id="dynaForm" value="#{messageValuesController.model}" 
            var="data" widgetVar="dynaFormWidget" >     
            <pe:dynaFormControl type="input" for="txt" >
            <p:panelGrid columns="2">
                <p:inputText id="txt" value="#{data.value}"
                    required="#{data.required}" />
                    </p:panelGrid>
            </pe:dynaFormControl>
        </pe:dynaForm>
       <p:commandButton value="Submit" action="#{messageValuesController.saveMessageTemplate}" process="dynaForm"  />  
</h:form>

Пожалуйста, кто-нибудь знает об этом?

Спасибо.


Ответы:


1

Как указано в витрине расширений Primefaces, как это сделает свое дело:

List<FilledMessageField> fields = new ArrayList<FilledMessageField>();  
for (DynaFormControl dynaFormControl : model.getControls())  
    if (dynaFormControl.getData() instanceof FilledMessageField)
        fields.add((FilledMessageField) dynaFormControl.getData());

Но просто из любопытства, почему вы перебираете FilledMessageField f:allfieldMessageList, если не используете f? Вы также можете просто взять List< FilledMessageField> и добавить в него элементы вашей модели при заполнении элементов управления DynaForm, так что вам не нужно будет вытаскивать его из модели с помощью довольно дорогостоящих instanceof проверок.

Примечание.
Также использование DynaForm для формы только для ввода кажется мне излишним. Вы можете просто использовать простой <ui:repeat> с <p:inputText> внутри, используя свой список fields в качестве резервной коллекции.

05.06.2015
  • Спасибо за ответ, а что касается переменной, то это была просто ошибка копирования. Я думаю, что нашел свою проблему, функция постконструктора вызывается и повторно инициализирует мою модель всякий раз, когда я отправляю свою форму даже с помощью ajax 05.06.2015
  • Я намерен добавить другие типы ввода, как только заработаю этот. 05.06.2015
  • @Badis подумайте о том, чтобы сделать ваш Bean Viewscoped, а не requestscoped. 05.06.2015
  • да, Жедар, это то, что я нашел по другим вопросам stackoverflow, но этот контроллер уже есть на @ViewScoped.. 05.06.2015
  • спасибо, Жедар, я решил проблему, мне просто нужно было удалить функцию постконструкции ... 05.06.2015
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]