Question: constant name="struts.action.extension" value="action"???? 問(wèn)題
Answer:這個(gè)是系統(tǒng)從struts.properties默認(rèn)繼承這個(gè)配置,所以用的時(shí)候會(huì)自動(dòng)加上.action
The URL extension to use to determine if the request is meant for a Struts action
用URL擴(kuò)展名來(lái)確定是否這個(gè)請(qǐng)求是被用作Struts action,其實(shí)也就是設(shè)置 action的后綴,例如login.do的'do'字。
s:form 的時(shí)候用
Question:Struts2的xml的配置
Answer:Struts2默認(rèn)會(huì)讀取classpath下的struts-default.xml,struts-plugin.xml,struts.xml這三個(gè)文件。
struts-plugin.xml的位置struts-plugin.xml會(huì)在你下載的plugin的jar包中,如struts2-spring-plugin-2.0.6.jar。
Question:java.lang.NullPointerException 異常
Answer:應(yīng)該沒(méi)在web.xml有配置struts 2的filter,試下將以下列代碼加到web.xml的元素之間:
好像需要Tomcat 5.5以上,5.0會(huì)有問(wèn)題,諸如NullPointerExceptio之類(lèi)的
Question:Could not find or error in struts.properties
java.lang.IllegalStateException: struts.properties missing
問(wèn)題解決:把struts.properties 放到classes下即可了
Question:的action才與struts.xml中的Action名一樣,
而 <form> 中的action應(yīng)為你的Action的路徑的全名如/mypath/myaction.action;
Answer:Action中的屬性值可以通過(guò)Javabean規(guī)范與請(qǐng)求是的參數(shù)綁定,
所以等Form標(biāo)志的name屬性必須與Action屬性名一致。
Question:取得Servlet API中的一些對(duì)象,如request、response或session等,應(yīng)該怎么做?
Answer:com.opensymphony.xwork2.ActionContext,可以通過(guò)它的靜態(tài)方法getContext()獲取當(dāng)前Action的上下文對(duì)象,
非IOC:
另外,org.apache.struts2.ServletActionContext作為輔助類(lèi)(Helper Class),可以幫助您快捷地獲得這幾個(gè)對(duì)象,
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
IOC:
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;
publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
???? private String message;
???? private HttpServletRequest request;
???? private HttpServletResponse response;
}
Question:表達(dá)式的問(wèn)題,有${表達(dá)式}、帶有#的表達(dá)式(如上文中的#session.msg),還有%開(kāi)始的表達(dá)式,
這些好像都是取出里面的值,請(qǐng)問(wèn)這些$、#、%開(kāi)頭的表達(dá)式有什么不同?各自在什么情況下使用?
Answer:OGNL中的${...}可以在定義Action的result時(shí),傳遞變量,如/deleteBook.action?isbn=${isbn}。也可以在國(guó)際化時(shí)引用變量;
#用于在頁(yè)面上引用ActionContext的值,也可以構(gòu)造映射(Map)等,如#request.xxx;
%{...}在標(biāo)簽屬性中引用變量,如
Question:如何得到cookies
Answer:先在Action中拿到HttpServletRequest的對(duì)象(請(qǐng)參考《Struts 2.0的Action講解》),然后調(diào)用request.getCookies()。
Question:
頁(yè)面就可以直接獲取${message},請(qǐng)問(wèn)這默認(rèn)是request級(jí)別的嗎?
如果是session級(jí)別的,是不是要在取得session后
在代碼中明確寫(xiě)入,session.setAttribute(xx.xxxx)
Answer:這些值是放在ActionContext中的,所以不是request或session等
轉(zhuǎn)載資料 from http://www.tkk7.com/max
posted on 2007-09-24 14:40
jadmin 閱讀(133)
評(píng)論(0) 編輯 收藏