打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
checkboxlist ?people?or?people异常解决办法

Example: people or people异常解决办法

(2010-01-12 15:32:34)
标签:

杂谈

分类: it技术

tag 'select', field 'list', name 'select': The requested list key 'status' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]

异常

今天研究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 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.handlidToken(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

    }
}

原文出自http://www.blogjava.net/landor2004/archive/2009/04/11/265016.html

 

我也是通过该博文受到启发,其实最终原因就是list没有初始化

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Servlet.service() for servlet default threw exception
Struts2教程9:实现自已的拦截器
java.lang.NullPointerException at com.opensymphony.xwork2.util.LocalizedTextUtil.findText(...
struts2学习笔记(9)——自定义拦截器
8、拦截器的使用
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服