Ordinary hut

          人間一福地,勝似天仙宮
          posts - 61, comments - 50, trackbacks - 0, articles - 1
          今天研究struts2的標簽功能,在用checkboxlist的時候,
          代碼如下
          <s:checkboxlist list="roles" listKey="id" listValue="name" name="selectRoleId"></s:checkboxlist>
          出現了如下異常:

          org.apache.jasper.JasperException: tag 'checkboxlist', field 'list', name 'selectRoleId': The requested list key 'roles' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
              org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:
          541)
              org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
          435)
              org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
          320)
              org.apache.jasper.servlet.JspServlet.service(JspServlet.java:
          266)
              javax.servlet.http.HttpServlet.service(HttpServlet.java:
          803)
              org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:
          154)
              org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:
          186)
              com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:
          361)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          265)
              com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:
          249)
              org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:
          68)
              com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
          87)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:
          122)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:
          195)
              com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
          87)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:
          195)
              com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
          87)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:
          148)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:
          93)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:
          235)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:
          89)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:
          128)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:
          104)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:
          267)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:
          126)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:
          138)
              com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
          87)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:
          148)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:
          164)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:
          128)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:
          176)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              org.apache.struts2.interceptor.TokenInterceptor.handleValidToken(TokenInterceptor.java:
          178)
              org.apache.struts2.interceptor.TokenInterceptor.doIntercept(TokenInterceptor.java:
          144)
              com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
          87)
              com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
          236)
              org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:
          52)
              org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:
          468)
              org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:
          77)
              org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:
          76)
          出現這個錯誤的原因可能如下:

          1 剛進入該界面的時候發生錯誤,原因是 list="roles"中的這個集合是空的,導致錯誤

          解決辦法很簡單,不能讓list為空

          2 剛進入該界面的時候list是有數據的,當點擊提交等按鈕的時候,數據被提交到后臺,如果配置了驗證框架或者在action中寫了validate方法,校驗沒有通過,未走action,直接返回了input,又指定回了當前界面。
          此時的checkboxlist中的list丟失了,導致了如上錯誤(這個錯誤提示的不太友好,讓人認為是類轉換錯誤)

          解決辦法是把初始化list的工作放到prepare攔截器中,因為prepare是在validate攔截器之前執行,即實現prepareble接口:
          public class RoleAction extends ActionSupport implements Preparable{
              @Override
              
          public void prepare() throws Exception {
                  
          //初始化list
              }
          }

          Feedback

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2009-04-23 17:55 by weid
          good!問題解決,謝謝樓主!

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2009-07-06 00:09 by mega
          寫了 RoleAction 之后,怎么用?

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄[未登錄]  回復  更多評論   

          2009-09-07 08:24 by King
          非常感謝,我終于找到了錯誤的原因

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2009-11-16 22:02 by ddq
          感謝,一樣的錯誤

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2010-01-18 09:21 by 11
          謝謝樓主。

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2010-06-22 23:02 by Eric_jiang
          我也遇到這個問題 謝謝指教

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2010-07-27 13:14 by South
          大頂樓主!

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2010-10-20 17:25 by jwshuang21
          還有可能是傳入的參數在ACTION中沒有定義全局變量。

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2010-10-26 23:57 by j
          太感謝了一只在想這個問題

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2011-01-15 17:26 by ZJY
          問題解決,太感謝樓主了

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2011-05-20 10:01 by 任超
          我剛遇到這個問題,請問怎么去解決呀 新手 請教了!
          加QQ 280096669

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2011-05-20 10:08 by 任超
          有沒有詳細點的!

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄[未登錄]  回復  更多評論   

          2012-05-16 20:51 by 袁勇
          樓主已經超神了!

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2012-10-31 16:13 by ww
          神一般樓主啊

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2013-05-02 00:00 by woshishui
          這是什么意思?

          # 菜鳥求助?。。?nbsp; 回復  更多評論   

          2013-11-12 18:36 by jackLin
          樓主,這個問題我糾結一天了,希望您能指導指導?。。?!

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2014-01-05 13:54 by 公子
          這樣寫的話,豈不是action中的每一個方法都會出現初始化一遍

          加一個判斷是妥妥的

          # re: 關于struts2的checkboxlist、select等標簽發生could not be resolved as a collection/array/map/enumeration/iterator type異常的記錄  回復  更多評論   

          2014-04-10 11:40 by 游客
          問題搞定,神一般樓主啊,謝謝樓主。
          主站蜘蛛池模板: 葵青区| 万全县| 如皋市| 巴马| 康马县| 高清| 黎川县| 五华县| 金平| 铁岭市| 嘉兴市| 宁乡县| 康保县| 青阳县| 龙井市| 鄱阳县| 响水县| 凤城市| 巴彦淖尔市| 汤阴县| 昌乐县| 佳木斯市| 阳高县| 连山| 桃江县| 逊克县| 巫山县| 鄂托克前旗| 山阴县| 叙永县| 甘孜| 鹤壁市| 湘乡市| 凤冈县| 扎兰屯市| 渝北区| 措勤县| 洛南县| 昌吉市| 玛沁县| 囊谦县|