Частичная визуализация полей формы с событием ajax valueChange в jsf - PullRequest
0 голосов
/ 12 марта 2020
<h:form id="newStudentForm">
    <h:outputLabel value="Student" for="studentId" />
    <p:selectOneMenu value="#{myBean.studentId}" id="studentId">
        <f:selectItems value="#{myBean.studentList}" var="student"
                       itemLabel="#{student.name}" itemValue="#{student.id}" />
    </p:selectOneMenu>

    <h:outputLabel value="Address" for="addressId" />
    <p:selectOneMenu value="#{myBean.addressId}" id="addressId">
        <f:selectItems value="#{myBean.addressList}" var="address"
                       itemLabel="#{address.name}" itemValue="#{address.id}" />
    </p:selectOneMenu>

    <h:outputLabel value="Address" for="addressId" />
    <p:selectOneMenu value="#{myBean.subjectId}" id="subjectId">
        <f:selectItems value="#{myBean.subjectList}" var="subject"
                       itemLabel="#{subject.name}" itemValue="#{subject.id}" />

        <a4j:ajax event="valueChange"
                  render="newStudentForm" 
                  listener="#{myBean.checkSubject}"
                  execute="@this"/>  
    </p:selectOneMenu>

    <h:outputLabel value="Price" for="priceId" rendered="#{myBean.checkSubject}" />
    <p:selectOneMenu value="#{myBean.priceId}" id="priceId"
                     rendered="#{myBean.checkSubject}">
        <f:selectItem itemValue="#{null}" itemLabel="" />
        <f:selectItems value="#{myBean.priceList}" var="price"
                       itemLabel="#{price.name}" itemValue="#{price.id}"/>
    </p:selectOneMenu>
</h:form>

Я пытаюсь сделать поле динамическим c, т. Е. Поле Цена. Когда я выбираю значение из темы, поле цены зависит от этого значения. В этом коде все работает нормально, за исключением того, что при рендеринге формы значения, которые я вводил в другие поля (например, адрес) перед выбором темы, переопределяются начальными значениями. Итак, как я должен реорганизовать этот ajax вызов события, чтобы значения не переопределялись. Функция checkSubject возвращает истину или ложь в зависимости от выбранной темы.

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