2 回答
TA贡献2003条经验 获得超2个赞
我只是喜欢获得BalusC在这里提供的信息-而且他很乐于帮助如此多的人获得如此好的信息,我以他的话语为福音,但是我无法利用事件的顺序来解决这种相同的时机在我的项目中。由于BalusC在这里甚至给我添加了书签,因此我想在同一地方捐赠一些高级时序问题的解决方案,因为它也解决了原始海报的时序问题。我希望这段代码可以帮助某人:
<p:pickList id="formPickList"
value="#{mediaDetail.availableMedia}"
converter="MediaPicklistConverter"
widgetVar="formsPicklistWidget"
var="mediaFiles"
itemLabel="#{mediaFiles.mediaTitle}"
itemValue="#{mediaFiles}" >
<f:facet name="sourceCaption">Available Media</f:facet>
<f:facet name="targetCaption">Chosen Media</f:facet>
</p:pickList>
<p:commandButton id="viewStream_btn"
value="Stream chosen media"
icon="fa fa-download"
ajax="true"
action="#{mediaDetail.prepareStreams}"
update=":streamDialogPanel"
oncomplete="PF('streamingDialog').show()"
styleClass="ui-priority-primary"
style="margin-top:5px" >
<p:ajax process="formPickList" />
</p:commandButton>
该对话框位于此表单之外XHTML的顶部,并且在对话框中嵌入了自己的表单以及一个数据表,该数据表包含用于流式传输媒体的其他命令,这些命令在初始化对话框时都需要准备好并准备就绪呈现。您也可以使用相同的技术来执行一些操作,例如下载需要准备的自定义文档,然后再通过对话框中的fileDownload按钮将它们准备流式传输到用户的计算机上。
如我所说,这是一个更复杂的示例,但它触及了您的问题和我的所有要点。单击命令按钮时,结果是首先确保用pickList的结果更新了后备bean,然后告诉后备bean根据用户在选择列表中的选择为用户准备流,然后在其中更新控件。动态对话框并进行更新,然后显示该对话框供用户开始流式传输其内容。
它的窍门是对主要的CommandButton使用BalusC的事件顺序,然后添加该<p:ajax process="formPickList" />位以确保它首先被执行-因为除非pickList首先更新了后备bean,否则什么都不会正确发生(这在我之前是没有发生的添加)。所以,是的,那个CommandButton摇摆不定,是因为您可以影响以前的,待处理的和当前的组件以及后备Bean-但是将所有这些组件相互关联的时机有时很难掌握。
添加回答
举报