今天遇到個以前使用Struts沒有注意的地方。
現象:
?? 在actionForward配置文件里面定義
???<forward name="success" path="/Catalog.jsp" redirect="true"/>
?? 當在提交頁面里面request.setAttbriute("msg","處理成功");
?? 提交后在Catalog.jsp 用request.getAttbriute("msg");居然為空,原因是設置了redirect="true"
下例舉例說明了redirect屬性的用法:
<forward name="success" path="/Catalog.jsp" redirect="true"/>
如果 redirect=true, URL 建立如 / contextPath / path 因為 HttpServletResponse.sendRedirect(…) 中解釋 URL 采用 ”/” 開頭相對于 servlet 容器根目錄。
如果 redirect=false, URI 建立如 / path 因為 ServletContext.getRequestDisptacher(…) 采用虛擬目錄相關 URL 。