Richfaces ExtendedDataTable更新而不滚动到顶部
Richfaces ExtendedDataTable update without scrolling to top
我正在尝试使用 rich:extendedDataTable 实现聊天功能。我可以通过轮询 table 来接收消息,但每次我轮询 table 时它都会滚动回顶部,因此无法阅读较早的消息。有没有办法禁用该功能,或者以不刷新整个 table 而是根据需要添加行的方式加载?这是代码:
<rich:extendedDataTable
id="message_list"
var="message"
value="#{studentChat.chatLog.messages}">
<rich:column width="100%">
<f:facet name="header">
<h:outputText value="Messages" styleClass="label_general"/>
</f:facet>
<!-- Style blue if teacher sent, light grey if student sent -->
<div style="border-radius:3px; background-color: #{(message.senderRole eq loggedUser.role ) ? '#b9caee': '#eeeeee'}">
<h:outputText value="#{message.message}" style="font-size: 1.3em"/><br></br>
<h:outputText value="sent #{message.timestamp}" style="float:right; font-size:.9em" /><br></br>
<h:outputText value="#{message.viewed ? 'read' :'delivered'}" style="font-size: .9em; float: right" />
</div>
</rich:column>
</rich:extendedDataTable>
每秒轮询一次。我仅限于 Richfaces 3 和 JSF 1.2。提前致谢!
我从同事那里得到了答案。这实际上非常简单。您所要做的就是将一个普通的 dataTable 包装在一个 panelGroup 中,如下所示:
<h:panelGroup layout="block" style="overflow: auto; height: 700px">
<h:dataTable id="myTable" ></h:dataTable>
</h:panelGroup>
使用此设置,您仍然可以在 table 上使用投票,但不会重新呈现父组件,因此用户不会被迫滚动回顶部。
希望这对其他人的帮助和对我的帮助一样多!
我正在尝试使用 rich:extendedDataTable 实现聊天功能。我可以通过轮询 table 来接收消息,但每次我轮询 table 时它都会滚动回顶部,因此无法阅读较早的消息。有没有办法禁用该功能,或者以不刷新整个 table 而是根据需要添加行的方式加载?这是代码:
<rich:extendedDataTable
id="message_list"
var="message"
value="#{studentChat.chatLog.messages}">
<rich:column width="100%">
<f:facet name="header">
<h:outputText value="Messages" styleClass="label_general"/>
</f:facet>
<!-- Style blue if teacher sent, light grey if student sent -->
<div style="border-radius:3px; background-color: #{(message.senderRole eq loggedUser.role ) ? '#b9caee': '#eeeeee'}">
<h:outputText value="#{message.message}" style="font-size: 1.3em"/><br></br>
<h:outputText value="sent #{message.timestamp}" style="float:right; font-size:.9em" /><br></br>
<h:outputText value="#{message.viewed ? 'read' :'delivered'}" style="font-size: .9em; float: right" />
</div>
</rich:column>
</rich:extendedDataTable>
每秒轮询一次。我仅限于 Richfaces 3 和 JSF 1.2。提前致谢!
我从同事那里得到了答案。这实际上非常简单。您所要做的就是将一个普通的 dataTable 包装在一个 panelGroup 中,如下所示:
<h:panelGroup layout="block" style="overflow: auto; height: 700px">
<h:dataTable id="myTable" ></h:dataTable>
</h:panelGroup>
使用此设置,您仍然可以在 table 上使用投票,但不会重新呈现父组件,因此用户不会被迫滚动回顶部。
希望这对其他人的帮助和对我的帮助一样多!