我完全不熟悉Spring框架(以及大多數Web開發),但我試圖將一些沉重的Java後端代碼連接到新的Spring和JSP項目。我的控制器的handleRequest()
在它返回我的request.jsp ModelAndView
對象之前正在開始長時間運行的工作線程。之後,我希望能夠繼續從我的JSP表單與該控制器進行交互,只要點擊表單中的按鈕,就可以在Controller中調用isThreadDone()
。根據三個不同的結果,我然後相應地重定向。這與我目前的做法可能嗎?這似乎違反了Spring MVC的一些方法,但我想不出一個好的辦法來做到這一點,我可以把我的頭圍繞。如果在這裏有任何事情,請原諒我的無知。提前致謝。按鈕onClick調用Java方法直到某個結果
0
A
回答
1
看看Spring @Async
註解。如果使用該註釋標註Service-layer Bean,它將在其自己的線程中運行,從而允許Controller線程在調用Service方法後不中斷地運行。通過synchronous
方法讓該線程爲該服務的Class級別設置一個值,並且您的Controller代碼可以隨意檢查這些切換以查看該進程是否已完成。喜歡的東西:
@Service
public myServiceClass {
private boolean isDone = false;
public synchronized void setIsDone(boolean isDone) {
isDone = isDone;
}
public synchronized boolean getIsDone() {
return isDone;
}
@Async
public void myServiceMethod() {
...long-running stuff...
setIsDone(true);
}
在控制器:
@Controller
class MyController {
@RequestMapping
public kickOffHandlerMethod() {
myServiceClass.myServiceMethod();
}
}
@RequestMapping
public dependentHandlerMethod() {
if(myServiceClass.getIsDone()) {
...do something...
}
}
}
如果有多個請求可能會揭開序幕的過程,那麼我會保存每個isDone
切換與某種標識符的HashMap中。然後線程會更新單個切換,每個請求一個。
1
好吧,任何事情都有可能,對吧?根據您提供的內容,您可以保留對該線程的引用(可能位於HttpSession中),以便在通過單擊按鈕發出新請求時,可以查詢該請求並返回適當的響應。
相關問題
- 1. 單擊按鈕後按鈕直到方法結束
- 2. 如何保持一個按鈕,直到方法結束
- 3. 如何從另一個活動調用onClick方法的按鈕
- 4. onClick按鈕調用另一個組件的方法
- 5. 按鈕onClick錯誤...找不到方法
- 6. 根據jQuery對話結果調用OnClick for asp:按鈕
- 7. 單擊按鈕時調用Java方法
- 8. 如何在HTML或JavaScript中按鈕的onclick方法調用兩個方法?
- 9. 從按鈕onclick調用colorbox
- 10. 返回按下UIAlertView到C++方法的按鈕的結果
- 11. 微調爲setSelection禁用我的按鈕的onclick方法
- 12. 從html5按鈕onclick事件調用服務器端方法
- 13. Javascript按鈕 - 在onClick後不會調用方法
- 14. 按鈕onClick方法從來沒有在片段內調用
- 15. JSF按鈕onclick事件調用bean方法
- 16. 從jquery對話框中調用asp.net onClick方法按鈕
- 17. 如何在PhantomJS中調用按鈕的onClick()方法?
- 18. 提交按鈕調用一個方法
- 19. 禁用下一個按鈕,直到所有方法加載
- 20. Java - 在網頁上調用onclick方法
- 21. Android的一個OnClick方法適用於多個按鈕?
- 22. 另一個類中的Java按鈕事件調用方法
- 23. 在按鈕的onClick()中使用多個參數的調用方法
- 24. Onclick CSS按鈕效果
- 25. 通過按鈕調用某個功能
- 26. 按鈕不處理的onClick方法
- 27. 按鈕OnClick方法不被執行ASP.NET
- 28. ListView控件與按鈕的onclick方法
- 29. ASP:按鈕的onClick =「導航+ run方法」
- 30. 片段中的Onclick按鈕方法
我想過這個,但它似乎是一種解決方法,而不是解決方案。如果這是最好的方式,那麼這是最好的方法。謝謝你的幫助! – Matt
@Matt:你關心的是什麼?如果您更清楚地定義您的方案,可能會出現更合適的解決方案。 –