2008年2月9日 星期六

[Struts] Struts 的 TAG 與 javascript 互動

在Struts 中的 TAG 例如: 等,須要跟 javascript互動時,又碰巧變數儲存在 jsp scope 中,那我們該如何去解決勒??

這個問題看似簡單

<html : link action="test" onclick="javascript : return confirm( ' <%= i %>' )" />

你以為這樣就解決嗎??

上面的結果就會出現一個 javascript confirm box 上面顯示 <%= i %>的訊息

剛開始我以為這樣是一定可以成功,結果出來卻不是我要的XD

因為透過 struts tag 裡面的 scriptlets(<%=%>) 是不會被JSP 先解析,所以就想說那就把呼叫confirm 所給的 arguments 的單括號拿掉!!

<html : link action="test" onclick="javascript : return confirm( <%= i %>)" />

結果就是連 confirm box都彈不出來, 透過 firefox 的 javascript console 來觀察錯誤在哪,結果就是跟你說 < 符號不能理解XD

這問題困擾了很多天,有一天透過 google 大神終於找到解答了!!!

這解答果然有撇步~~~

只要將上面的 TAG 改為

<html : link action="test" onclick= ' <%= "return confirm( ' " +i+ " ' )" %>' />

也就是將呼叫 javascript 的 code 在 scriptlets 中當作字串來處理

然後有牽涉到 JSP scope 中變數的部分就利用 string 相加的方式完成整句在client browser 先由 server 解析

與大家分享之~~

沒有留言: