我有一个primefaces数据网格,我试图使用primefaces Push进行更新。我可以看到onMessage方法被调用,但是如果我在onMessage方法中设置了断点,组件本身只会更新。这是处理程序:
@PushEndpoint("/prices")
public class PricesResource {
private static final Logger logger = Logger.getLogger("PricesResource");
@OnMessage(encoders = {JSONEncoder.class})
public OrderBook onMessage(OrderBook orderBook) throws InterruptedException {
logger.log(Level.INFO, "PricesResource.onMessage price {0}", orderBook.getPrice());
return orderBook;
}
}
这是我在index.xhtml中调用更新组件的代码:
<p:socket onMessage="handleMessage" channel="/prices" />
<script type="text/javascript">
function handleMessage(data)
{
updateWidgets();
}
</script>
<p:remoteCommand name="updateWidgets"
actionListener="#{parliamentManager.findLatestPrices}"
update="resultDisplay"/>
目前该组件位于index.xhtml的底部:
<h:panelGroup id="resultDisplay">
<p:dataGrid id="prices" var="orderBooks" value="#{parliamentManager.latestPricesResults}" columns="3" rows="12">
<p:column>
<p:panel header="#{orderBooks.bidOrderId.member.memberId}">
<h:panelGrid columns="1">
<h:outputText value="#{orderBooks.price}" />
</h:panelGrid>
</p:panel>
</p:column>
</p:dataGrid>
</h:panelGroup>
我非常难过为什么会这样,任何建议都会受到赞赏。