Я использую Primefaces 3.3.1 и задаю вопрос.Как открыть меню наложения из oncomplete p: commandButton with Primefaces?
У меня есть p: commandButton внутри p: столбец p: данныеTable. Я могу показать меню наложения при нажатии кнопки с помощью xhtml, показанного ниже.
<p:commandButton id="btnID" icon="ui-icon-circle-triangle-s" style="height: 16px;">
<f:setPropertyActionListener value="#{searchItem}" target="#{bean.selectedSearchItem}" />
</p:commandButton>
<p:slideMenu overlay="true" trigger="btnID" my="left top" at="left bottom"
model="#{bean.menuModel}"/>
В этом случае bean.menuModel может мгновенно вернуть данные меню. Но у меня есть еще один случай, когда требуется предварительная обработка, чтобы готовить данные меню. Поэтому у меня тоже есть этот.
<p:commandButton ajax="true" id="historyButton" action="#{bean.getHistory()}"
icon="ui-icon-note" style="height: 16px;"
onstart="workingDialog.show();"
oncomplete="workingDialog.hide(); historyMenu.show();">
<f:setPropertyActionListener value="#{searchItem}" target="#{bean.selectedSearchItem}" />
</p:commandButton>
<p:menu overlay="true" widgetVar="historyMenu" my="left top" at="left bottom"
model="#{searchBean.menuModel}"/>
Я имел в виду, когда кнопка нажата, она вызывает bean.getHistory(), который начинает загрузку данных меню для этой строки, и показать модальный диалог с кружась значком. По завершении загрузки диалог исчезнет, и появится меню наложения. То, что я не могу сделать, - последняя часть этого сценария. Выше кода срабатывает исключение.
java.lang.NullPointerException
javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:561)
org.primefaces.component.menu.BaseMenuRenderer.encodeOverlayConfig(BaseMenuRenderer.java:138)
org.primefaces.component.menu.MenuRenderer.encodeScript(MenuRenderer.java:45)
org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:39)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
Код, показанный ниже, отлично работает без кода, связанного с кодом.
<p:commandButton ajax="true" id="historyButton" action="#{searchBean.getHistory()}"
icon="ui-icon-note" style="height: 16px;"
onstart="workingDialog.show();"
oncomplete="workingDialog.hide();">
<f:setPropertyActionListener value="#{searchItem}" target="#{bean.selectedSearchItem}" />
</p:commandButton>
Я думаю, это простой вопрос для экспертов. Как открыть меню наложения из неполного?
Заранее спасибо.