我想使用包含一些commandButtons的p:对话框,但我不能从命令按钮调用我的bean而不知道原因。
在xhtml页面上有两种形式,第一种形式包含一些东西,如面板,面板,按钮等。 第二个表单只包含我的对话框。
我的beanHandler(beanHandler)是ViewAccessScoped。 这个xhtml页面上的所有内容都只适用于我的p:面板无法正常工作
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:m="http://java.sun.com/jsf/composite/components/mmnet">
<h:form id="activityForm">
<p:panel >
...
...
<f:facet name="footer">
...
<p:commandButton id="readyButton"
action="#{beanHandler.toggleStatus()}"
rendered="#{beanHandler.ready}"
value="#{labels.erledigt}"
icon="ui-icon-check"
update="@form :dialogForm"
onclick="dlg.show()">
<p:tooltip for="readyButton" style="width:300px;">
<h:outputText value="#{messages.adviceWfEventActivityFinish}" />
</p:tooltip>
</p:commandButton>
</f:facet>
</p:panel>
</h:form>
<h:form id="dialogForm">
<p:outputPanel id="justAPanel">
<p:dialog header="Ticket schließen?" widgetVar="dlg" resizable="false" appendToBody="true" rendered="#{beanHandler.lastActivity}" id="dlg">
<h:panelGrid columns="2" style="margin-bottom:10px">
<h:outputLabel value="Soll das Ticket geschlossen werden?" />
<p:spacer />
<p:commandButton id="yesButton"
value="#{labels.ja}" update=":workflowContentPanel"
onclick="dlg.hide()"
action="#{beanHandler.closeTicket()}" process="@form"/>
<p:commandButton id="noButton" value="#{labels.nein}" update=":workflowContentPanel" onclick="dlg.hide()"/>
</h:panelGrid>
</p:dialog>
</p:outputPanel>
</h:form>
</ui:composition>
如果我使用如上所示的页面,则p:面板不会出现在buttonClick上。如果我改变代码的这一部分
<p:dialog header="Ticket schließen?" widgetVar="dlg" resizable="false" appendToBody="true" rendered="#{beanHandler.lastActivity}" id="dlg">
到
<p:dialog header="Ticket schließen?" widgetVar="dlg" resizable="false" appendToBody="true" rendered="true" id="dlg">
(将呈现的属性更改为true)显示对话框,但我的按钮不起作用(无法调用bean)。 如果不知道为什么会这样。
有人有想法吗?
此致
答案 0 :(得分:0)
使用属性appendToBody
,您可以将实际对话框直接附加到body
- 元素。通过它,它不再是形式。没有表格,就没有Bean调用。可能的解决方案:
<h:form>
放入p:dialog
appendToBody
属性,可能将其设置为false
并将p:dialog
移至另一个位置(直接作为已存在的<h:form>
的子项)希望它有所帮助...