【问题标题】:JSF update component on every ajax request每个 ajax 请求上的 JSF 更新组件
【发布时间】:2013-05-12 14:47:18
【问题描述】:

您好,我想将 JSF 消息呈现为引导警报

<ui:repeat value="#{facesContext.messageList}" var="facesMessage">
    <div class="alert">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <strong>Warning!</strong> #{facesMessage.summary}
    </div>
</ui:repeat>

在primefaces中有

<p:messages autoUpdate=true>

意味着它会在每个 ajax 请求上重新渲染,而无需显式地将其添加到 commandLink 的渲染属性中

有没有办法使用普通的 JSF-ajax 标签来实现这一点?

【问题讨论】:

  • 不,没有。您必须在每个&lt;h:commandButton&gt; 上手动添加&lt;f:ajax render="yourFacesMessagesComponentId" /&gt;。这就是为什么对于这些​​情况,建议使用第三方库。
  • primefaces 能做到这一点吗?
  • &lt;p:messages autoUpdate=true&gt;?
  • 嗯,我无法设计引导警报
  • @BalusC 你对此有什么看法,有什么想法吗?

标签: ajax jsf messages


【解决方案1】:

您可以在页面加载期间尝试这样的操作:

jsf.ajax.addOnEvent(autoRender);

autoRender 中,您将能够触发一种操作以呈现目标组件。例如:

function autoRender() {
    $(":form:autoRenderHiddenButton").click();
}

在按钮中:

<h:commandButton id="autoRenderHiddenButton" 
                 style="display: none">

    <f:ajax render="theComponentIdYouWantToRender"/>
</h:commandButton>

或者您可以使用Omniface's commandScript 轻松实现相同的行为:

<o:commandScript name="autoRender" render="theComponentIdYouWantToRender"/>

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 1970-01-01
    • 2013-01-11
    • 2013-05-24
    • 2017-09-18
    • 2012-09-14
    • 2020-06-28
    • 2020-02-20
    • 2015-01-14
    相关资源
    最近更新 更多