雅典之夏的小站
          知人者智 自知者明 Fighting!!

          這就是在前面的簡單應用中,在view中,通過<bean:write name="myform" property="name">調用Actionform時出的問題,這個問題的直接原因很簡單就是:找不到"myform"這個Bean,用網上的話說就是在Action里一般會request.setAttribute()一些對象,然后在轉向的jsp文件里(用tag或request.getAttribute()方法)得到這些對象并顯示出來。這個異常是說jsp要得到一個對象,但前面的Action里并沒有將對象設置到request(也可以是session、servletContext)里。可能是名字錯了,請檢查jsp里的tag的一般是name屬性,或getAttribute()方法的參數值;或者是Action邏輯有問題沒有執行setAttribute()方法就先轉向了。
          還有另外一個可能,純粹是jsp文件的問題,例如<logic:iterate>會指定一個id值,然后在循環里<bean:write>使用這個值作為name的值,如果這兩個值不同,也會出現此異常。(都是一個道理,request里沒有對應的對象。)
          ”。
          ??????我對Actionform的機制不理解,心中的疑問:
          ??????1)如果ActionForm是Struts自動封裝到Request中,那么我可以直接在view.jsp中,能過<bean:write>調用這個ActionForm,如果假設這種情況成立時,那么Beanwrite中的bean名應該是ActionForm的類名,還是在Struts-config.xml里給ActionForm定義的類名?
          ????? 2)如果沒有封裝的話,那么是不是需要在Action中把Actionform通過request.setAttribute("","")放到request中
          還是要放到Session中,
          ????? 我測試時候出的問題
          ?????? 有一次就是在1)的情況下測試成功的,但是以后再怎么試都不行,那次是引用的Struts-config.xml里給ActionForm定義的類名。非常奇怪,
          ????????還有就是2)的情況,測試中如果Action和Frombean在一個包下面,那么通過request.setAttribute("",""),就可以獲取到Bean,如果不是的話,有時候行,有時候不行,
          ??????? 如果通過request.getSession.setAttribute()設置ActionForm的話,每次都可以,他們的Scope肯定在一個Request中,那么為什么Session就可以,而Request不行。(結論:因為是在Actionfoward中設置了“redirect='true',這樣的話一跳轉時,Request中的內容都會被重置,所以不行,把這一句去掉就可以了”)

          posted on 2006-10-30 14:07 rkind 閱讀(8522) 評論(1)  編輯  收藏 所屬分類: Struts

          FeedBack:
          # re: Struts中Cannot find bean XXX in any scope的問題
          2012-07-18 18:14 | yuhuashi
          我也覺得奇怪,就算Action里面沒有setAttribute("");為什么提取出來的不是null,而是直接拋出異常?  回復  更多評論
            
          主站蜘蛛池模板: 宜兰县| 浦城县| 泗水县| 陇南市| 庄河市| 全州县| 南丹县| 桂平市| 塘沽区| 军事| 图片| 商南县| 长葛市| 内黄县| 喀什市| 资兴市| 镇赉县| 波密县| 横峰县| 阳泉市| 资源县| 柏乡县| 易门县| 东阳市| 沾益县| 乾安县| 南乐县| 甘肃省| 彰化市| 通河县| 古丈县| 嘉禾县| 蒲江县| 小金县| 永川市| 靖西县| 三门峡市| 梁山县| 平和县| 张家港市| 常宁市|