`

Struts2常见异常与分析处理(转)

阅读更多

Struts2常见异常与分析处理【不断更新】

1、ognl.OgnlException: target is null for setProperty   异常原因之1

      分析处理:

      在action中有:

private transient Filmrlspack filmrlspack;
/**
 *这里省略了getter、setter方法的代码
 */      提交数据的表单代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<form method="post" name="wmfForm" id="wmfForm" action="">
<span id="wmf-msg"></span>
<table width="700" border="0" cellspacing="0" cellpadding="0" class="sample">
  <tr>
    <td>影片发行版名称:</td>
    <td><input type="text" readonly="readonly" name="Filmrlspack.filmname" value="<%=request.getParameter("filmname") %>" /></td>
    <td>业务类型:</td>
    <td><input type="hidden" name="businesstypeID"  value="<%=request.getParameter("businesstypeID") %>" /><input type="text" name="businesstypeName" readonly="readonly" value="<%=request.getParameter("businesstypeName") %>" /></td>
  </tr>
  <tr>
    <td>出品单位:</td>
    <td><input type="text" name="Filmrlspack.manufacture" /></td>
    <td>出品年代:</td>
    <td><input type="text" name="Filmrlspack.manufacturedate" /></td>
  </tr>
  <tr>
    <td>导演:</td>
    <td><input type="text" name="Filmrlspack.directors" /></td>
    <td>主演:</td>
    <td><input type="text" name="Filmrlspack.leaderact" /></td>
  </tr>
  <tr>
    <td>语种:</td>
    <td><input type="text" name="Filmrlspack.langtype" /></td>
    <td>是否主语种:</td>
    <td><input type="checkbox" name="Filmrlspack.maintype" value="1" checked="checked" /></td>
  </tr>
  <tr>
    <td>影片描述:</td>
    <td colspan="3"><textarea rows="5" cols="75"  name="Filmrlspack.filmname" ></textarea></td>
  </tr>
</table>
</form>      其中很多字段为非必填字段,若什么都不填提交到action中为null,报以上异常。

      把action中的


private transient Filmrlspack filmrlspack;
/**
 *这里省略了getter、setter方法的代码
 */
      改成

private transient Filmrlspack filmrlspack = new Filmrlspack();
/**
 *这里省略了getter、setter方法
 */      就可以了。

 

 

2. ognl.OgnlException: target is null for setProperty 异常原因之2


 

问题是这样的,实体对象一定要有一个无参数的构造函数。否则就会报-------异常:ognl.OgnlException: target is null for setProperty

这个是在页面提交时,通过ognl,先调用无参数的构造函数,然后再调用相应的setter方法去可构造实体对象,没有无参数的构造函数,当然报错了,加上一个无参数的构造函数就OK

 

3. ognl.OgnlException: target is null for setProperty 异常原因之1补

Struts target is null for setProperty(null, "x", [Ljava.lang.String;@179da9f)
关键字: struts2 struts.devmode

上午工作中出现了这样一个异常:

 

    ognl.OgnlException: target is null for setProperty(null, "x", [Ljava.lang.String;@1a48515)

    ognl.OgnlException: target is null for setProperty(null, "y", [Ljava.lang.String;@1d57c7)

 

     好像是我表单里面有多少个提交项后台就抛出多少对这样的异常信息。

     可是我的表单里面是没有X,Y这样的提交信息的。。。很是郁闷,而其在前期的开发中也出现过这样的异常,虽然后台抛出这样的异常,但是它不影响程序的正常运行,所以一直也就没管它。今天又苦苦寻觅了许久终于搞定了。。

 


原来,我提交表单的按钮是如下定义的:

<input type="image" name="Submit" value="提交" onclick="return checkpwd();" src="images/a_tj.gif"/>

只要标签里面的type="image"那么这个带图片的按钮就能提交表单,而且还能在图片上加汉字。原来以为是个好的发现。呵呵,但是今天却发现问题就处在它身上。

当我把提交的按钮换成如下定义:

<input type="submit" name="bu1" onclick="return checkpwd();"/>

好了,一切OK了。没有异常了。

上面的带图片的按钮是美工给的,因此在asp和php应该都没问题,主要是因为Struts2的问。

struts.xml文件里面有这么一个"struts.devMode"。当设为true时,html表单数据中有和action属性匹配不上的参数名时就会提示这样的信息。我试了一下,果然如此,因此在开发过程中将这个属性设为true还是不错的,可以帮我们发现一些可能出现的问题。

这个错误信息主要因为struts.devMode = true引起,因为使用struts在默认配置下对任何提交到action的参数强制需要setter方法,而我们在使用token的时候一般都没有正确的为每一个token设置该参数,为此提交的token信息就会在这里一起一些错误信息,如果需要屏蔽掉这些的话,可以设置webwork.devMode = false来避免这种错误信息的抛出,当然这些错误在程序调试的时候是有用处了,我们可以根据这些信息来删除不必要的参数

 


Xml代码
<constant name="struts.devMode" value="true"/>  

 

4、Caused by: There is no result type defined for type ‘redirect-action’ mapped with name

      分析处理:

      在struts.xml中配置如下:

<global-results>
 <result name="login" type="redirect-action">redirectLoginAction</result>
</global-results>       报以上异常,用的Struts2包版本为2.1.8.1,后来查看了jar包中的struts-default.xml,发现type中没有redirect-action这一类型,而是变成了redirectAction,把type=”redirect-action”改成type=”redirectAction”就不会有这个异常了。

分享到:
评论

相关推荐

    struts常见异常及处理

    ### Struts 常见异常及处理 #### 1. javax.servlet.ServletException: Must specify type attribute if name is specified - **异常描述**:当在 JSP 页面中使用自定义标签时,如果标签中定义了 `name` 属性,则...

    struts2框架源码分析及问题汇总

    三、Struts2常见问题与解决 1. Action跳转问题:如果Action返回的结果类型不正确,可能会导致页面跳转失败。确保Result类型与配置文件中的定义一致。 2. 拦截器异常:当Interceptor中出现异常时,可能导致整个流程...

    Struts2拦截器原理分析

    总结,Struts2拦截器是其核心特性之一,它增强了框架的功能性和灵活性,使得开发者能够更轻松地处理诸如数据校验、事务控制等常见问题。理解和掌握拦截器的原理和用法,对于提升Java Web开发的效率和代码质量具有...

    struts2常见错误

    然而,如同任何复杂的框架一样,Struts2在开发和部署过程中可能会遇到一些常见错误。以下是一些典型的问题及相应的解决方案: 1. **异常启动过滤器Struts2:No mapping found for dependency** 这个错误通常是因为...

    struts1和struts2项目实例

    SSH2_1可能是Struts2与Spring、Hibernate集成的一个项目实例,可能包含了这些框架的配置文件、源代码、以及相关的JAR库。在这个项目中,开发者可能已经配置好了Struts2的动作(Action)和结果页面,Spring的Bean配置...

    struts2列子源码

    Struts2提供了一套完整的异常处理机制,允许开发者定义全局或特定Action的异常处理策略。通过配置文件,我们可以指定当特定异常发生时应跳转到哪个错误页面。 通过学习和分析张孝祥提供的这两个Struts2示例源码,...

    struts2 源码解读

    此外,还可以深入到动态方法调用、类型转换、异常处理等方面,这些都是Struts2处理请求和响应时的重要环节。 在实际开发中,掌握Struts2的源码知识可以帮助我们解决一些难以定位的问题,例如性能瓶颈、错误处理不当...

    Struts2 做的留言板

    Struts2内置了一些常见的结果类型,如`dispatcher`(重定向或转发到JSP)、`stream`(用于下载文件)等。在这个项目中,结果类型可能被用来重定向到显示留言列表的页面。 8. **OGNL(Object-Graph Navigation ...

    struts2测试案例

    9. **异常处理**:Struts2允许全局或局部地处理应用程序中的异常,提供了一种优雅的方式来管理错误和异常信息。 10. **插件机制**:Struts2有一个强大的插件系统,可以扩展框架的功能,如Spring插件可以方便地与...

    struts2深入详解源码1-5章

    第五章可能进一步讲解Struts2的高级特性,如国际化、插件机制、Action的组合以及Struts2与其他框架(如Spring、Hibernate)的整合。国际化支持多语言环境,让应用更具有普适性;Action的组合允许将复杂的业务逻辑...

    struts2框架模拟-教学示范代码

    5. **异常处理**:Struts2提供了全局异常处理机制,可以在这里看到如何配置和使用。 6. **国际化**:可能包含了如何实现多语言支持的示例。 7. **测试**:可能包括JUnit测试类,用于测试Action类的业务逻辑。 ...

    struts2 拦截器

    1. **日志与异常处理**:拦截器可以记录Action的执行过程,捕获并处理运行时异常,提高程序的健壮性。 2. **性能监控**:通过拦截器可以统计Action的执行时间,进行性能分析。 3. **权限验证**:拦截器可以实现用户...

    深入浅出Struts2 包含了源码

    8. **Ajax支持**:Struts2与dojo、prototype等JavaScript库结合,可以创建部分刷新的交互式Web应用。 在《深入浅出Struts2》一书中,作者可能详细讲解了以下内容: - **基础篇**:介绍Struts2的基本概念、安装和...

    Struts2权威指南 加源码

    4. **异常处理**:Struts2提供了全局异常处理机制,可以统一处理应用程序中的异常,并将其转化为用户友好的错误页面。 5. **国际化**:通过资源包(properties文件),Struts2支持多语言环境,方便不同地区用户的...

    Struts2 apps

    这个压缩包中的实例涵盖了Struts2的基础用法和一些高级特性,包括登录注册、数据验证、文件上传下载等常见应用场景。通过学习这些例子,开发者可以了解如何配置Action、编写拦截器、设置结果类型以及如何与视图交互...

    Struts2 Request Process Procedure

    下面将详细阐述Struts2的请求处理过程。 1. **URL映射**: 当用户通过浏览器发送一个HTTP请求,请求的URL通常包含了Action的名称。Struts2框架会根据配置的`struts.xml`或`struts-default.xml`等配置文件,将URL...

    struts2 的showcase,可直接导入到myeclise

    9. **异常处理**:Struts2提供了一套完善的异常处理机制,可以全局捕获并处理异常,提高程序的健壮性。 10. **国际化与本地化**:Struts2支持多语言环境,通过资源包(Properties文件)实现不同地区的语言切换。...

    Apache+Struts2验证

    5. **使用安全拦截器**:利用Struts2的拦截器机制,实现输入验证和异常处理,增强应用安全性。 6. **安全编码实践**:遵循安全编码规范,避免在动态方法调用中使用不安全的变量。 7. **定期审计和扫描**:使用自动...

    Struts2源码

    常见的Interceptor如Params(处理请求参数),Validation(进行表单验证),Exception(异常处理),I18n(国际化)等,它们按照配置的顺序执行,形成一个拦截器链。每个Interceptor执行完毕后可以选择是否将控制权...

    Struts2+Spring+Hibernate框架技术与项目实战 源码(下).zip

    此外,实战项目的代码还会涉及到异常处理、国际化、权限控制等常见功能的实现。通过分析和学习这些源码,开发者不仅可以掌握三大框架的基本用法,还能了解如何在实际项目中优化架构,提高代码的可维护性和可扩展性。...

Global site tag (gtag.js) - Google Analytics