我正在嘗試執行以下操作:我有一個網站,在我的網站上有jsf頁面。在一些頁面中,我有一個數據表,其中填充了一些來自數據庫的值。我想定期更新這個數據庫,以便這些表中的值也會改變。當我搜索時發現我需要使用石英。我正在考慮讓託管bean填充數據庫中的表,然後從該數據庫中獲取該值的值。這裏是我的示例代碼:如何在jsf網站的背景中運行線程?
<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上嗎?我跌倒了,就像我需要另一個在freeground中運行的線程一樣,每當#{values.buy}調用託管bean時,線程應該更新數據庫。我該怎麼做?
感謝
編輯:我覺得我的問題不是清楚,所以這裏的總結:我希望數據庫定期更新,每10分鐘等。由於我從數據庫中填充數據表,每當用戶瀏覽查看此數據表的頁面時,表中就會填入最新的更新數據庫值。
您是否需要隨時更新數據庫,或只是在用戶正在查看頁面時?您需要在用戶查看時自動更新這些值,還是僅在用戶重新加載頁面時才更新這些值? – Simon
@Simon我想要每隔20分鐘更新一次數據庫,而不管查看數據表所在頁面的人。我希望數據庫中的值自動更新,以便如果用戶查看數據表所在的頁面,表中填充了最新的更新值 – yrazlik
數據表視圖可以在頁面查看時更新 – yrazlik