【发布时间】:2013-07-09 07:01:13
【问题描述】:
我正在尝试执行以下操作:我有一个网站,并且我的网站上有 jsf 页面。在某些页面中,我有一个 DataTable,其中填充了来自 database 的一些值。我想定期更新这个数据库,这样这些表中的值也会改变。当我搜索时,我发现我需要为此使用石英。我正在考虑制作一个托管 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 分钟一次。由于我从数据库中填充了我的数据表,因此每当用户浏览查看此数据表的页面时,该表都会填充最新更新的数据库值。
【问题讨论】:
-
您是否需要一直更新数据库,还是仅在用户查看页面时更新?您需要在用户查看时自动更新这些值还是仅在用户重新加载页面时自动更新?
-
@Simon 我想一直更新数据库,比如每 20 分钟一次,无论人们查看数据表所在的页面。我希望 db 中的值自动更新,这样如果用户查看数据表所在的页面,表中就会填充最新更新的值
-
可以在查看页面时更新数据表视图
标签: java database jsf jakarta-ee quartz-scheduler