有誰知道在使用Struts2時如何輕鬆訪問JSP中的Action類?雖然我知道通常可以使用Struts標籤和OGNL,但實際上我發現它們都很混亂(顯然是由於無知),並且坦率地說,在JSP中維護Java更容易(更不用說更容易解釋新的程序員,因爲每個人都知道Java)。使用Struts2在JSP中訪問Action類
...我已經尋找一個解決方案多年,我已經找到了最好的解決方法是調用從類的靜態方法,看起來像:
public static BaseAction getCurrentAction(HttpServletRequest request) {
OgnlValueStack ognlStack = (OgnlValueStack)request.getAttribute(org.apache.struts2.ServletActionContext.STRUTS_VALUESTACK_KEY);
return (BaseAction)ognlStack.getRoot().get(0);
}
...這將是一個BaseAction
類擴展你所擁有的Action類,所以,在你的JSP,你可以說:
<%
MyAction action = (MyAction)BaseAction.getCurrentAction(request);
String myValue = action.getMyValue();
%>
然而這一切似乎過於複雜,它假定在OgnlValueStack
以精確的順序 - 必須有一個更好的辦法,非?
非常感謝您的任何建議!
$ {行動.myValue} –
或'$ {myValue}'。我發現一個標籤,甚至OGNL,都難以理解,你會訴諸scriptlet。有沒有具體的事情會引起你的問題?如果是這樣,那麼解決這個問題可能會更有意義,而不是試圖找出方法來編寫非常可疑的代碼來完成開箱即用的事情。 –
謝謝大家!很明顯,這是一個議論性的東西,但使用腳本感覺更簡單也更自然。 ...我會承認無知 - 例如。我仍然不明白何時使用#,$和%以及差異。事情是,我得到了Java,因爲它在其他任何地方都有使用,我傾向於將任何項目中使用的技術數量減到最少,以便讓事情更簡單。 – Alex