Почему бы не использовать новый сканер для каждого чтения? Как показано ниже. При таком подходе вы не столкнетесь с вашей проблемой.
int i = new Scanner(System.in).nextInt();
Это потому, что вкладка - это именование контейнера, а ваше обновление должно быть update="Search:insTable:display"
. Что вы можете сделать, просто разместите свое диалоговое окно вне формы и все еще внутри вкладки, тогда оно будет: update="Search:display"
Попробуйте изменить update="insTable:display"
на update="display"
. Я считаю, что вы не можете префикс id с идентификатором формы.
в первую очередь: насколько я знаю, что размещение диалогового окна внутри табуляции является плохой практикой ... вам лучше вытащить его ...
и теперь на ваш вопрос:
извините, мне потребовалось некоторое время, чтобы получить то, что именно вы хотели реализовать,
сделал это сейчас в моем веб-приложении, и он работает
, как я уже говорил, : диалоговое окно `p: tabView,
покидает диалог p:, как вы первоначально предположили:
<p:dialog modal="true" widgetVar="dlg">
<h:panelGrid id="display">
<h:outputText value="Name:" />
<h:outputText value="#{instrumentBean.selectedInstrument.name}" />
</h:panelGrid>
</p:dialog>
, а командная ссылка p: должна выглядеть так (все, что я сделал это изменить атрибут обновления)
<p:commandLink update="display" oncomplete="dlg.show()">
<f:setPropertyActionListener value="#{lndInstrument}"
target="#{instrumentBean.selectedInstrument}" />
<h:outputText value="#{lndInstrument.name}" />
</p:commandLink>
то же самое работает в моем веб-приложении, и если это не сработает для вас, то я думаю, что что-то не так в вашем java-компоненте ...