2011-12-26 76 views
0

到目前爲止,當我需要更新任何頁面的內容時,我總是不得不直接更新源代碼並重新部署整個應用程序。現在,我想實現一個功能,以便我可以動態更新任何HTML頁面的內容,而無需重新部署應用程序。如何動態地編輯HTML文件的內容

我試圖用PrimeFaces的<p:editor>組件實現該功能,但它不起作用。更確切地說,我的功能可以正確更新所需的頁面。當我轉到源代碼文件夾時,我實際上可以看到我的更改。但是,該頁面的後續請求仍呈現舊內容。

如果你能告訴我我做錯了什麼,我將不勝感激。如果您能指示我其他任何方式來實現相同的目標,我也會非常感激。

+0

您是否正在尋找獲取服務器完整路徑的方法,因此不是使用硬編碼的Writer writer = new FileWriter(「C:\\ Users \\ James \\ Documents \\ NetBeansProjects \\ MyProject \\ MyProject-war \\ web \\「+ path); 你想找到一種方法來獲取你的web應用程序的路徑? – Daniel 2011-12-26 21:59:12

+0

根據下面的答案,我想我需要一種方法來進入「部署區域」。你能幫我怎麼做嗎? – 2011-12-26 22:00:42

回答

0

我的代碼實際上工作得很完美。從user1068746的上面的答案,我做了一些研究,發現這個article。解決方案非常簡單:創建映射到我的硬盤目錄的虛擬目錄。因此,對我的硬盤上文件的任何更新都會立即顯示給未來的請求。

+0

然而,只要您重新部署WAR,僅因爲它們不包含在原始WAR中,它們就會丟失。 – BalusC 2011-12-27 12:49:38

+0

@BalusC當我創建新文件時,我把文件夾'C:\ webContent \'放在項目文件夾或部署文件夾之外。我認爲這就是爲什麼在清理和構建之後,我的文件仍然不受影響。 – 2011-12-27 13:07:45

+0

此鏈接現在似乎已經死亡。 – Jamal 2015-09-15 15:25:31

1

我認爲您正在編輯部署中的工作空間。 :)

你有2個地方的代碼。一個部署,另一個部署在你的「工作空間」中。

首先,它聽起來像你想讓你的工作空間成爲部署。通過這種方式,無論何時編輯內容,都將直接更改部署。爲此,只需在IDE中創建一個新項目並將其指向部署文件夾即可。

我打賭:

C:\\Users\\James\\Documents\\NetBeansProjects\\MyProject\\MyProject-war\\web\\ 

點到你的工作空間,而不是部署。如此有效地,您的部署正在編輯您的工作空間。

1

我認爲你正在尋找這一個:

FacesContext.getCurrentInstance().getExternalContext().getRealPath("/") 

,如果你想的WEB-INF

位置使用以下

String fullpath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/")+File.separator+"WEB-INF"; 

等..

+0

我不認爲這會起作用。我需要一個固定的文件路徑,以便我可以讀取和寫入該文件。您建議的鏈接只是瀏覽器請求頁面的鏈接。我不能寫任何東西到那條路上。 – 2011-12-26 22:31:58

+0

試試這個文件aFile = new File(FacesContext.getCurrentInstance()。getExternalContext()。getRealPath(「/」)+ File.separator +「WEB-INF」+ File.separator +「someFolder」+ File.separator +「someFile.txt」 ); – Daniel 2011-12-26 23:04:49