У меня есть простое JSF приложение с формой, один из элементов управления будучи :ч: selectOneListBox не работает
<h:selectOneListbox style="width: 231px; height: 27px;position:absolute;left:400px;top:325px;" value="#{PatientsSearch.selectedDoctor}">
<f:selectItems value="#{PatientsSearch.doctors}" var="d" itemLabel="#{d.name}" itemValue="#{d.name}" />
</h:selectOneListbox>
При запуске приложения, я могу увидеть список заселяется (т.е. PatientsSearch. врачи правильно восстановлены), поэтому я могу выбрать один элемент из . После того, как я выберу нужный элемент, в этой форме больше ничего не работает. Все остальные кнопки, похоже, простаивают, они больше не реагируют на клики. Если, однако, ничего не выбрано из , все кнопки работают как ожидалось (т. Е. Они запускают свои обратные вызовы в управляемых компонентах).
Я отладил приложение и заметил, что после выбора элемента в списке обратные вызовы других кнопок в форме не срабатывают при нажатии на них. Также в отладчике я никогда не видел setSelectedDoctor(), который вызывается (см. Фрагмент выше), как я и ожидал.
Я использую реализацию Mojarra 2.0.1 JSF.
Что мне здесь не хватает?
Update: Это вся форма:
<h:form style="width: 876px; background-color: #FED981; padding-left: 60px; padding-top: 30px; margin-left: 80px; margin-top: 40px; color: #804000; font-style: normal; font-family: Verdana, Arial, Sans-Serif">
<h:outputLabel style="position:absolute;left:200px;top:100px;" value="New appointment:"></h:outputLabel>
<br>
<br>
<h:inputText style="width: 259px;position:absolute;left:200px;top:120px;" binding="#{PatientsSearch.inputText1}" valueChangeListener="#{PatientsSearch.lookForName}" immediate="true" id="inputText1" />
<h:commandButton value ="Search patients by name:" style="width: 173px;position:absolute;left:465px;top:120px;" action="#{PatientsSearch.getPatientsByName}">
<f:param name="day" value="#{request.getParameter('day')}" />
<f:param name="month" value="#{request.getParameter('month')}" />
<f:param name="year" value="#{request.getParameter('year')}" />
</h:commandButton>
<br>
<h:panelGroup id="pn_DETAILS_GRP" style="overflow:auto;position:absolute;top:155px;left:200px;width:300px;height:150px;solid black">
<h:dataTable id="tb_USER_DETAILS" border="1" var="patient" value="#{PatientsSearch.patients}" style="width:300px;height:150px" rowClasses="oddRow, evenRow">
<h:column id="name">
<f:facet name="header">
<h:outputText value="Name" style="font-size:10pt"/>
</f:facet>
<h:outputText value="#{patient.name}" style="font-size:8pt"/>
</h:column>
<h:column id="phone">
<f:facet name="header">
<h:outputText value="Phone" style="font-size:10pt"/>
</f:facet>
<h:outputText value="#{patient.phoneMobile}" style="font-size:8pt"/>
</h:column>
<h:column>
<h:inputHidden id="patientId" value="#{patient.id}" />
</h:column>
</h:dataTable>
</h:panelGroup>
<h:inputHidden id="testId" />
<br><br><br>
<h:outputLabel value="Choose doctor:" style="width: 200px;position:absolute;left:200px;top:325px;"></h:outputLabel>
<h:selectOneListbox style="width: 231px; height: 27px;position:absolute;left:400px;top:325px;" value="#{PatientsSearch.selectedDoctor}" size="1">
<f:selectItems value="#{PatientsSearch.doctors}" var="d"
itemLabel="#{d.name}" itemValue="#{d.name}" />
</h:selectOneListbox>
<br><br><br>
<h:commandButton value="Schedule" style="position:absolute;left:200px;top:430px;" action="#{PatientsSearch.scheduleAppointment}">
<f:param name="day" value="#{request.getParameter('day')}" />
<f:param name="month" value="#{request.getParameter('month')}" />
<f:param name="year" value="#{request.getParameter('year')}" />
</h:commandButton>
</h:form>
Вы должны добавить некоторые другие части вашей формы, включая кнопку. На первый взгляд это может быть конверсия ошибки проверки, есть ли у вас «h: messages» где-то? –
В этой форме нет кнопки? _Все другие кнопки, похоже, простаивают, они больше не реагируют на клики. Какие? Каковы геттеры/сеттеры для '# {PatientsSearch.selectedDoctor}' и '# {d.name}'? –
Привет, вы можете увидеть всю форму - я добавил ее выше. Есть две кнопки, и они работают нормально, только если я не выбираю какой-либо элемент в selectOneListbox. В противном случае их обратные вызовы не запускаются. –