我正在尝试执行以下操作:我有一个网站,并且我的网站上有 jsf 页面。在某些页面中,我有一个DataTable,其中填充了数据库中的一些值。我想定期更新这个数据库,这样这些表中的值也会改变。当我搜索时,我发现我需要为此使用石英。我正在考虑制作一个托管 bean 来填充数据库中的表,然后从该 bean 的数据库中获取值。这是我的示例代码:
<h:form>
<rich:extendedDataTable style=" column-width: 174px; width:174px;" value="#{exchangeRates.values}" var="values" id="accountsTable" styleClass="accountsTable" headerClass="accountsTableHeader" rowClasses="accountsTableOddRow,accountsTableEvenRow" >
<rich:column width="40px;">
<f:facet name="header">Currency</f:facet>
#{values.type}
</rich:column>
<rich:column width="45px;">
<f:facet name="header">Alış</f:facet>
#{values.buy}
</rich:column >
<rich:column width="45px;" >
<f:facet name="header">Satış</f:facet>
#{values.sell}
</rich:column>
</rich:extendedDataTable>
以及此 jsf 页面的托管 bean:
private String value;
private ArrayList<Money> values = new ArrayList<>();
public ArrayList<Money> getValues() {
try {
getCurrentExchangeValue();
} catch (IOException ex) {
Logger.getLogger(ExchangeRates.class.getName()).log(Level.SEVERE, null, ex);
}
return values;
}
private void getCurrentExchangeValue() throws IOException {
//GET THE VALUES FROM THE DATABASE AND
//FILL THE "values" ArrayList
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
我在页面中的数据表已成功填充此代码,但未定期更新。我的问题是,我应该将“手动更新数据库”代码放在哪里?它应该在另一个函数中的这个托管 bean 上吗?我觉得我需要在免费中运行另一个线程,每当像 #{values.buy} 这样的东西调用托管 bean 时,线程应该更新数据库。我该怎么做?
谢谢
编辑:我认为我的问题不清楚,所以总结一下:我希望数据库定期更新,比如每 10 分钟一次。由于我从数据库中填充我的数据表,因此每当用户浏览查看此数据表的页面时,该表都会填充最新更新的数据库值。