中定義我在嘗試使用GenericService.resolveName(java.lang.String pName)
會話範圍的模擬錯誤時遇到了上述錯誤。 如果我將範圍更改爲「全局」,則按預期工作。但我需要在原型範圍內有我的組件。那麼,我能做些什麼?錯誤[nucleusNamespace。]在全局範圍內解析組件'''的嘗試無效。它在範圍原型
回答
您可能無法從較高範圍對象解析較低範圍組件。
如果您從全局作用域組件調用resolveComponent可能無法解決它。
組件的屬性應始終指向範圍等於或大於其自身的對象。因此,全局作用域組件屬性應該只指向也具有全局作用域的對象;會話範圍組件屬性應只指向具有全局或會話範圍的對象;而請求範圍組件屬性可以指向任何範圍的對象,包括請求。
請仔細閱讀下面
您從文檔中引用的內容對於組件的屬性是正確的(如果我們要在.properties文件中指定它們並使用setter方法注入)。 但我相信我們應該能夠使用GenericService.resolveName()' –
解決更低範圍的組件。我檢查了API文檔,它沒有爲運行時組件解析指定這樣的限制。 http://docs.oracle.com/cd/E23507_01/Platform.20073/apidoc/atg/nucleus/GenericService.html#resolveName(java.lang.String) –
另一種方法是使用atg.servlet.ServletUtil.getCurrentRequest ().resolveName(「yyx」)將解析爲請求與當前線程關聯的作用域組件。但按照文檔「原型」是例外,可以在任何級別解決,一旦解決它將保持本地範圍。 (如果全局組件解決了原型範圍,則組件移至全局範圍)。 – Mouli
請確認您的要求ATG文件,以確保你確實有使用原型範圍。
由於我們不知道您的要求,我們無法驗證您嘗試實現的是否是一種好的做法,但是我的2美分來克服您的技術問題是從請求級別開始解決該組件。
如果你有機會到當前請求,做這樣的事情:
request.resolveName(componentName);
否則,這樣做:
ServletUtil.getCurrentRequest().resolveName(componentName);
resolveName是計算昂貴的操作,所以它應該只被使用當你沒有任何其他選項時(例如在請求servlet管道中,引用一個請求或會話組件),但是如果必須的話,它將解決你的問題。
- 1. 無效的範圍錯誤
- 2. 錯誤[]無效的範圍
- 3. 從Python全局範圍解析變量
- 4. 全球範圍內VS文件範圍
- 5. 組變量全局範圍
- 6. `var`在全局範圍內做什麼?
- 7. 在全局範圍內保持PSSession
- 8. Jquery全局變量範圍/錯誤值
- 9. Javascript全球範圍誤解
- 10. 代碼在全局範圍內工作,但不在本地範圍內工作?
- 11. 如何從全局範圍調用jQuery範圍內的函數?
- 12. Joomla 2.5變量全局組件範圍
- 13. 如何在局部範圍內使用在全局範圍內創建的「無需分配」的變量
- 14. 嘗試使用Repa包時不在範圍內錯誤
- 15. 這在全球範圍內
- 16. sed錯誤「無效的範圍結束」
- 17. 嘗試讀取解析JSON數組時索引超出範圍
- 18. 無法在全球範圍內
- 19. 錯誤,它失去範圍
- 20. 測試範圍在JavaScript中的函數的範圍內的虛擬範圍
- 21. javascript中的全局範圍和局部範圍
- 22. 嘗試在基於不同範圍的值的範圍內輸入值
- 23. 錯誤Social Auth 4.4 ::無效範圍:publish_stream。
- 24. 網站範圍內的全局變量
- 25. 全局範圍內的函數
- 26. 疑難解答原型類的範圍
- 27. 範圍無效嘗試添加User.Read.All在V2.0微軟圖形API
- 28. 範圍錯誤
- 29. 變量全局範圍理解問題
- 30. Rails模型塊內lambda範圍錯誤
您使用的是哪個版本的ATG?在你的評論下面你參考ATG 2007.3文檔。原型範圍僅在ATG10.1.1中引入,以應付Endeca墨盒處理程序。你能否給我們提供一個你認爲不起作用的代碼摘錄(和錯誤),以便我們可以幫助你追蹤它。 – radimpe