2013-01-05 37 views
1

我發現IntelliJ IDEA 12不理解對Scala模板的更改。例如,假設我有index.html.scala這個:IDEA是否可以識別Play Scala模板更改?

@(message: String) 

我的控制器使用稱之爲:

return ok(index.render("Your new application is ready.")); 

然後我更改模板是:

@(message: String, foo: String) 

而控制器爲:

return ok(index.render("Your new application is ready.", "foo")); 

我發現IDEA會將控制器代碼標記爲紅色,聲稱我有一個額外的參數(「foo」),我不應該這樣做。直到我打開頁面,Play才重新編譯模板,使錯誤突出顯示消失。

當然,這是一個很大的問題,因爲IDEA優秀的語法突出顯示的重點是讓我在加載瀏覽器之前確保我的代碼良好。當前行爲的工作方式,我的流程是代碼 - >重新加載 - >檢查錯誤,而不是首選代碼 - >檢查錯誤 - >重新加載。

任何其他人遇到此問題?

+0

迄今爲止發現的最好的事情是在命令行上打開播放控制檯並運行〜compile命令。然後,至少重新編譯會在文件更改時發生,儘管它仍然不是我期望從IDEA獲得的體驗。 –

回答

1

通過爲下一個請求的默認播放等待(在瀏覽器中的網頁,即手動刷新)涉及熱重裝載(和重新編譯改變元件)。

play ~run運行你的應用程序,所以它會在文件保存後重新加載。並且在接下來的幾秒內將更改的參數顯示給Idea 12

+0

是的,這與〜編譯基本相同(我將其作爲後續評論提到)。但我的沮喪是,它仍然不是您期望從IDEA獲得的正常行爲。另外,由於在IDE失去焦點之前,IDEA不會將文件保存到磁盤,因此您仍然需要退出到另一個應用程序,這會打破正常流程。 Bummer :( –

+0

)按CTRL + S將保存所有文件,並在後臺重新編譯已更改的元素,問題出在哪裏?相信我,連續重新編譯是你最想看到的最後一件事,它會刻錄CPU – biesior

+0

即使使用CTRL + S,IDEA也不會注意到底層重新編譯類的更改,直到您退出並重新聚焦爲止。它與「同步」設置有關(請參閱首選項 - >常規 - >同步 - >在幀激活時同步文件) –

相關問題