2009-05-27 69 views
1

如果我在Spring控制器中將一個名爲「foo」的對象放入模型中,並且想限制它的範圍,我該如何做到這一點。在JSP中限制模型的範圍

比方說,我有一個頁面,使用一個jsp標籤,作爲參數「foo」。如果我在jsp中調用標籤,例如<tag foo="${bar}" />,則在我看來,模型「foo」正在干擾「bar」。

或者即使不是,如果我只是想限制模型「foo」的範圍只能在jsp頁面中訪問,而不能在其他頁面中訪問(無論是在ed頁面還是在第一個jsp頁面調用的標籤中。 )

回答

1

基本上你不能限制範圍。將對象從Controller傳遞到視圖的唯一方法是通過請求範圍屬性。

如果您對單個頁面有很多不同的視圖/控制器,您可能希望爲請求屬性指定一個命名約定,如控制器的類名稱。唯一麻煩的是,訪問它們是不那麼幹淨

${requestScope['com.your.app.Controller.RESULT']} 

一個可能是用來創建變量的頁面範圍的版本:

<c:set var='result' value="${requestScope['com.your.app.Controller.RESULT']}"/> 
... 
${result} 

在你的榜樣,我不知道我會說那'foo'干擾'bar',它看起來像是將bar作爲參數傳遞給標籤?

+0

謝謝。在這個例子中,是的,我將bar作爲參數傳入。但在標籤中,我得到了「model foo」,而不是bar,因爲綁定到「parameter foo」的值。至少,我在過去的名字衝突中遇到了麻煩。我不確定是否只有另一個問題,但我覺得請求參數「foo」會覆蓋標籤中的標籤參數「foo」。 – egaga 2009-05-27 06:38:35