【问题标题】:Richfaces modalPanel load with AjaxRichfaces modalPanel 使用 Ajax 加载
【发布时间】:2011-07-02 20:57:33
【问题描述】:

我在我的项目中使用richfaces,特别是标签rich:modalPanel,它允许在页面中显示弹出窗口。

为此,我将我的弹出窗口包括在内:

<ui:include src="popup.xhtml" />

此弹出窗口包含以下代码:

<rich:modalPanel id="sra" width="400" autosized="true" left="100" >
...
</rich:modalPanel>

最后要显示弹出窗口,我在主页中这样做:

<a4j:commandLink id="linkSRA" value="#{msg['SRA']}" action="#{controller.checkSRA}" oncomplete="#{rich:component('sra')}.show()" />

一切正常,但我的问题是下一个:

在一个页面中,我有很多弹出窗口,每个弹出窗口都包含在主页中。这一个的重量非常大。那么,当我想加载弹出窗口时,如何在 ajax 中加载弹出窗口的内容?

谢谢

【问题讨论】:

    标签: java jsf richfaces


    【解决方案1】:

    通过一些操作重新渲染面板内容,然后在 oncomplete=".." 中打开模式

    【讨论】:

    • 所以我必须在我的 bean 中存储重新渲染值?一个布尔值,指示是否必须呈现内容?
    • 为了更好地理解,您是要重新渲染模态面板内容还是实际的模态面板?
    • 根据您的建议,我认为重新呈现当您单击链接(或显示此模式的任何事件)时显示的实际模式面板。
    【解决方案2】:

    我写了一篇小文章:“如何创建有状态的 Richfaces 弹出窗口”,其中展示了如何创建弹出控制器。这个弹出控制器允许用几行替换所有模态标签:

    <a4j:outputPanel binding="#{popupController.popupContainer}" id="popupContainer">
    <c:forEach items="#{popupController.popups}" var="popup">
    <f:subview id="popupView#{popup.id}">
    <ui:include src="#{popup.uri}">
    <ui:param name="popupBean" value="#{popup.popupBean}"/>
    </ui:include>
    </f:subview>
    </c:forEach>
    </a4j:outputPanel> 
    

    这篇文章是可用的here。不好意思,太长了,直接贴在这里。

    【讨论】:

    • 我会去看你的文章,但我对你的快照有意见。您使用 c:forEach 标签,但有时,richfaces 标签和 jstl 标签之间会出现冲突。
    • 我看了你的文章,这个想法很有趣。我有一些问题,你为什么使用关键字同步添加或删除方法?对于您的弹出 id,您使用整数,但是在有很多用户的生产环境中,您可能会溢出整数大小?
    • 我与 c:forEach 没有任何冲突。没错, int 可以溢出。使用长的可能会更好。对于 10 popup/s,int 将溢出直到 7 年。我使用 synchronized 关键字是因为用户倾向于点击不止一次。 “添加”和“删除”方法使用弹出列表,在这些方法结束之前应该保持不变。我同意它可以改进。
    猜你喜欢
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    相关资源
    最近更新 更多