【问题标题】:adding row to rich:datatable for a few seconds (notification)将行添加到 rich:datatable 几秒钟(通知)
【发布时间】:2012-06-14 05:41:03
【问题描述】:

我正在使用richFaces - rich:dataTable。 我需要删除一些行,然后在新行(在广告之后)显示几秒钟的通知,然后它(带有通知的行)将消失。

在 JSF 中,我无法为我的表提供唯一 ID 或名称,因此我不知道如何在 DOM 中找到它。也许那时我可以添加一些 jQuery 行代码。

【问题讨论】:

  • 奇怪的是你不能给一个JSF组件添加一个唯一的ID,基本上你可以通过添加id="dtMyData"来做到这一点。此外,仅添加一行来显示您的消息也不是很好,而是使用rich:messagesh:messages 以优雅的方式向应用程序用户显示消息。
  • 您尝试添加 id 吗?在源文件中,您将看到类似 id="myform:dtMyData:j_dk0:0" 的内容,导致 JSF 更改它。我可以使用 H:messages,但我需要它像 jQuery 通知一样,闪烁 3 秒然后消失。

标签: jsf-2 richfaces


【解决方案1】:

正如我所说,您可以这样做:

<h:form id="myForm">
    <h:dataTable id="dtMyData" value="#{bean.lstData}" var="data">
        <!-- column definitions -->
    </h:dataTable>
</h:form>

呈现的 HTML 会是这样的

<form id="myForm">
    <table id="myForm:dtMyData">
        <!-- rows auto generated -->
    </table>
</form>

而且你可以使用最简单的 JS 在你的 DOM 中找到它

document.getElementById('myForm:dtMyData')

另外,你可以使用&lt;rich:dataTable&gt;标签组件代替&lt;h:dataTable&gt;,不会有问题。

您可以使用 JavaScript/jQuery 自行“删除”行,或者仅通过删除列表中的项目并使用 &lt;a4j:commandButton render="dtMyData"&gt; 重新呈现数据表(而不是命令按钮,您可以使用 &lt;a4j:commandLink&gt;)。

要在触发 ajax 操作后向用户显示消息,您可以使用以下 Richfaces 代码:

<a4j:status onstop="Richfaces.showModalPanel('mdpMessage')" />
<rich:modalPanel id="mdpMessage" resizeable="false" zindex="5000"
        minHeight="30" minWidth="10" height="70" width="150">
        <f:facet name="header">
            <h:outputText value="Operation Results" />
        </f:facet>
        <h:outputText value="Messages" />
        <!-- you can add your h:messages here -->
        <a4j:commandButton value="Close"
            onclick="Richfaces.hideModalPanel('mdpMessage')" />
</rich:modalPanel>

【讨论】:

  • 我按照你说的做了,但是我的表没有重新渲染。如果我在提交按钮后刷新页面,我会看到行已被删除。但是刚刚刷新。
  • 我发现了问题!它不是 ,它是
  • @udar_molota 我在 JSF 1.2 和 RF 3.3 中进行了代码思考。我会根据您的需要记下并发布代码。如果您指定您正在使用的版本会更好:)
猜你喜欢
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多