Primefaces 6.2 TabView onTabChange Данные формы имеют значение Null

[edit на основе этого теперь возможно в последних версиях]

[Обновленный ответ] Вы можете запросить следующий способ вернуть имя класса и идентификатор студента, только если они уже зарегистрированы.

db.student.find({},
 {_id:0, name:1, students:{$elemMatch:{$eq:ObjectId("51780f796ec4051a536015cf")}}})

, и вы вернете то, что ожидали:

{ "name" : "CS 101", "students" : [ ObjectId("51780f796ec4051a536015cf") ] }
{ "name" : "Literature" }
{ "name" : "Physics", "students" : [ ObjectId("51780f796ec4051a536015cf") ] }

[Исходный ответ] В настоящее время невозможно сделать то, что вы хотите сделать. Это несчастливо, потому что вы могли бы это сделать, если бы ученик был сохранен в массиве как объект. На самом деле, я немного удивлен, что вы используете только ObjectId (), так как всегда требует от вас поискать учеников, если вы хотите отобразить список студентов, обучающихся по определенному курсу (смотрите (1) Если вы сохранили (в качестве примера) идентификатор и имя в массиве курсов, например:

g5]

{
        "_id" : ObjectId("51780fb5c9c41825e3e21fc6"),
        "name" : "Physics",
        "students" : [
                {id: ObjectId("51780f796ec4051a536015cf"), name: "John"},
                {id: ObjectId("51780f796ec4051a536015d0"), name: "Sam"}
        ]
}

Тогда ваш запрос будет просто:

db.course.find( { }, 
                { students : 
                    { $elemMatch : 
                       { id : ObjectId("51780f796ec4051a536015d0"), 
                         name : "Sam" 
                       } 
                    } 
                } 
);

Если этот ученик был зарегистрирован только в CS 101, вы вернетесь:

{ "name" : "Literature" }
{ "name" : "Physics" }
{
    "name" : "CS 101",
    "students" : [
        {
            "id" : ObjectId("51780f796ec4051a536015cf"),
            "name" : "John"
        }
    ]
}
1
задан R D 23 February 2019 в 19:31
поделиться

1 ответ

Я нашел обходной путь для этого, но я не уверен, почему он работает таким образом:

Мне пришлось добавить удаленную команду с прослушивателем tabchange на tabView.

<p:remoteCommand name="onTabChangeProcess" process="tView, @this"/> 
    <p:tabView activeIndex="#{deleteMe.activeIndex}" id="tView" onTabChange="onTabChangeProcess()">
            <p:ajax event="tabChange" listener="#{deleteMe.onTabChange}" update="tView" process="tView"/>

Это заставило форму работать как ожидалось.

0
ответ дан R D 23 February 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: