ERROR [com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler] - Could not create and/or set value back on to object
引用
struts2 类型转换异常时错误信息屏蔽
2011-05-24 16:29
类型转换异常导致转换方法没有正常返回,fieldError 中添加了相应的错误记录,系统打印出改异常,级别为warm。我认为不算是struts2的bug. 转换异常抛出警告很正常。如想屏蔽可用logger4j 配置级别到error 即可
ognl.MethodFailedException: Method "setLoc" failed for object tjx.HelloWorld@651e95 [java.lang.NoSuchMethodException: tjx.HelloWorld.setLoc([Ljava.lang.String;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1285)
at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1474)
at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2245)
at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.setProperty(CompoundRootAccessor.java:77)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2245)
at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
at ognl.SimpleNode.setValue(SimpleNode.java:301)
at ognl.Ognl.setValue(Ognl.java:737)
另一种解决方式,自己捕获异常,并在异常处理代码中添加filderror:
if (context != null && (Boolean.TRUE.equals(context.get(XWorkConverter.REPORT_CONVERSION_ERRORS)))) {
String realProperty = "loc"; //这要转换属性名称
String fullName = (String) context.get(XWorkConverter.CONVERSION_PROPERTY_FULLNAME);
if (fullName != null) {
realProperty = fullName;
}
Map<String, Object> conversionErrors = (Map<String, Object>) context.get(ActionContext.CONVERSION_ERRORS);
if (conversionErrors == null) {
conversionErrors = new HashMap<String, Object>();
context.put(ActionContext.CONVERSION_ERRORS, conversionErrors);
}
conversionErrors.put(realProperty, value);
}
return null;
引用
struts2.x 严重: Could not create and/or set value back on to object
2010-03-17 09:02
在用struts2.1提交表单时发生以下错误:
2010-3-17 8:51:08 com.opensymphony.xwork2.util.logging.jdk.JdkLogger error
严重: Could not create and/or set value back on to object
java.lang.InstantiationException: com.model.GuestInfo
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
....
原因:经过分析,是因为在表单提交的时候,action并没有创建表单对应的实例。
因为用人在写表单对应的类时,写了一个带有参数的构造方法,而在action中只是定义了这个类,没有实现。
解决方法:方法1、在表单对应的类中,再建个什么也不做的构造方法,即不带有参数和方法的构造方法。
方法 2、在action中,new出表单对应的类。
本人用第一种方法。
分享到:
相关推荐
在掌握Struts2和OGNL的基础上,开发者可以进一步学习Struts2的其他组件和特性,如标签库、异常处理、国际化支持、拦截器机制、输入校验、文件上传和下载等,这些都是构建复杂Web应用不可或缺的组件和功能。
8. **异常处理**:当OGNL表达式无法解析时,Struts2会抛出相应的异常,如`ValueExpressionException`,帮助开发者找出问题所在。 9. **OGNL在视图层的应用**:在JSP或其他视图技术中,可以通过OGNL表达式动态地显示...
OGNL(Object-Graph Navigation Language)是Struts2框架中重要的表达式语言,它用于在应用程序中进行数据绑定和表达式求值。这篇文档将详细解释OGNL API及其在Struts2框架中的应用。 首先,OGNL是一个强大的、动态...
5. **异常处理**:当发生异常时,Struts2允许使用OGNL表达式来决定如何处理异常,如定义错误页面或返回特定的结果代码。 以下是一个简单的Struts2 OGNL示例: ```xml <!-- Struts2配置文件 --> <struts> ...
6. **异常处理**:在Struts2的拦截器中,可以使用OGNL处理异常,例如`<result type="tiles">error</result><exception-mapping exception="java.lang.Throwable" result="error" />`,当发生异常时,会跳转到错误...
5. **错误和消息展示**:Struts2允许将错误信息存储在ValueStack中,通过OGNL表达式在视图层展示。例如,使用`fieldErrors`和`actionErrors`集合可以显示表单验证错误和全局错误信息。 6. **日志记录**:在处理异常...
- **OGNL注入**:由于OGNL的强大功能,如果不加以限制,恶意用户可能利用OGNL表达式执行非法操作,因此Struts2在后期版本中增加了对OGNL表达式的安全控制。 5. **最佳实践**: - 使用拦截器进行数据校验和预处理...
### Struts2中OGNL的概念及原理说明 #### 一、OGNL表达式的基本用法与特点 **OGNL**,即**Object Graphic Navigation Language**(对象图导航语言),是Struts2框架中用于处理对象及其属性的强大工具之一。通过...
在Struts2中,OGNL(Object-Graph Navigation Language)是其默认表达式语言,用于数据绑定、属性访问以及控制流程。本篇文章将详细介绍Struts2中OGNL的使用,包括基本语法、表达式操作以及在实际开发中的应用。 ##...
5. **异常处理**:Struts2的全局异常处理也可以使用OGNL表达式来指定错误页面。 **OGNL表达式实例** 1. **字段访问**:`#user.name` 会访问`user`对象的`name`属性。 2. **方法调用**:`#user.getUsername()` 调用`...
在Struts2框架中,OGNL(Object-Graph Navigation Language)是默认的表达式语言,用于数据绑定和页面表现层的交互。XWork则是Struts2的核心工作框架,它提供了动作(Action)执行、类型转换、异常处理等功能。 ...
例如,如果用户输入的年龄字符串无法转化为整数,Struts2会抛出异常,我们可以通过定制转换器来处理这种情况。 最后,我们来看一下OGNL(Object-Graph Navigation Language)。OGNL是Struts2中的核心表达式语言,...
在Struts2中,OGNL被用作默认的表达式语言,负责处理Action属性到JSP页面之间的数据绑定以及用户输入的解析和设置。OGNL2.61是这个库的一个版本,可能会包含新的功能、性能改进和错误修复。 3. **XWork**: XWork是...
XWork是Struts2的基础,它提供了一套Action管理机制,包括Action的生命周期管理、异常处理和事务管理等。XWork-2.0.5是Struts2的一个重要组成部分,它的许多功能被Struts2 Core继承并扩展。XWork的核心是...
9. **异常处理**:Struts2通过全局异常映射(Global Exception Mapping)来统一处理应用程序中抛出的异常,提高代码的可维护性。 10. **国际化与本地化**:Struts2支持多语言环境,可以通过资源包(properties文件...
其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达式语言,用于数据绑定和表示层的数据操作。这篇深入学习的文章主要探讨了OGNL表达式的原理和使用。 首先,我们来理解一下OGNL是什么。OGNL是...
2. **Ognl注入**:Struts2使用OGNL(Object-Graph Navigation Language)表达式语言进行视图层与模型层的数据交互。不恰当的配置或过滤不足可能导致恶意用户输入的OGNL表达式被执行,从而实现远程代码执行。 **K8 ...
10. **异常处理**:Struts2提供了一套完整的异常处理机制,可以自定义错误页面和异常处理器。 总的来说,"struts2jar.zip"压缩包是一个实用的学习资源,涵盖了从基础到进阶的Struts2知识,通过阅读提供的说明和实践...
Struts2内置了对OGNL的支持,可以方便地在JSP页面中使用OGNL表达式获取模型数据。 - **标签库**:Struts2提供了丰富的标签库,可以帮助开发者快速构建表单和页面元素,提高开发效率。 - **拦截器**:拦截器是Struts2...
Struts2是一个非常流行的Java Web框架,它极大地简化了创建MVC(模型-视图-控制器)架构的应用程序。在给定的“struts2-Annotation”主题中,重点是Struts2框架如何利用注解(Annotation)来增强其功能和简化配置。...