`
叶威1992
  • 浏览: 14150 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

struts2与jquery easyui中的easyui-datagrid出现异常ognl.MethodFailedException: Method

阅读更多
jsp页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'add_property.jsp' starting page</title>
   
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  <script type="text/javascript" src="js/Jquery-easyui-1.2.6/jquery-1.7.2.min.js"></script>
 
  <script type="text/javascript" src="js/Jquery-easyui-1.2.6/jquery.easyui.min.js"></script>
 
  <link rel="stylesheet" href="js/Jquery-easyui-1.2.6/themes/default/easyui.css" type="text/css"></link>
 
  <link rel="stylesheet" href="js/Jquery-easyui-1.2.6/themes/icon.css" type="text/css"></link>
 
  <script type="text/javascript" src="js/Jquery-easyui-1.2.6/locale/easyui-lang-zh_CN.js"></script>
 
  </head>
 
  <body>
  <form action="add!addproperty" method="get">
 
    <table class="easyui-datagrid" style="width:500px;height:250px">
    <thead>
    <tr>
    <th>资产名</th>
    <th><input type="text" name="property.pname"/>
    </th>
    </tr>
    <tr>
    <th>资产数量</th>
    <th><input type="text" name="property.pcount"/></th>
    </tr>
    <tr>
    <th>价格</th>
    <th><input type="text" name="property.pprice"/></th>
    </tr>
    <tr>
    <th>供应商</th>
    <th><input type="text" name="property.paddress"/></th>
    </tr>
    <tr>
    <th><input type="submit" value="提交"/></th>
    </tr>
    <thead>
    </table>
    </form>
  </body>
</html>
在点击提交时候会出现异常:
ognl.MethodFailedException: Method "setPcount" failed for object com.zcsys.domain.Property@1325905 [java.lang.NoSuchMethodException: com.zcsys.domain.Property.setPcount([Ljava.lang.String;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1265)
at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1454)
at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:28)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2225)
at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
at ognl.SimpleNode.setValue(SimpleNode.java:301)
at ognl.ASTChain.setValueBody(ASTChain.java:227)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
at ognl.SimpleNode.setValue(SimpleNode.java:301)
at ognl.Ognl.setValue(Ognl.java:737)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:198)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:161)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:149)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:276)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:187)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoSuchMethodException: com.zcsys.domain.Property.setPcount([Ljava.lang.String;)
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1206)

然后你会发现浏览器的传值如下:
http://localhost:8080/zcsys/add!addproperty?property.pname=123&property.pcount=3&property.pprice=5&property.paddress=dsaf
&property.pname=&property.pcount=&property.pprice=
&property.paddress=

会有重复的,这样会让ognl无法进行类型转换而导致异常,而导致重复的原因就是jquery easyui中的easyui-datagrid导致的,如果你用的谷歌浏览器的话你可以审查元素你会发现在table中多<thead>和<tbody>标签这就是导致出现重复的原因。
解决办法有两种:(1)删除<thead>并将<th>改成<td>。(2)将<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>和<base href="<%=basePath%>">。但总的来说就是不要用jquery easyui中easyui-datagrid
分享到:
评论

相关推荐

    easyui-datagrid2-demo.zip

    "easyui-datagrid2-demo.zip" 文件包含了使用 EasyUI Datagrid 的一个示例,帮助开发者了解如何实现数据的加载、分页、排序等基本操作。 在这个 demo 中,我们可以从以下几个方面学习 EasyUI Datagrid 的使用: 1....

    easyui1.7 官网示例大全

    easyui\easyui-accordion-demo.zip easyui\easyui-crud-demo.zip easyui\easyui-datagrid10-demo.zip ...easyui\easyui-datagrid2-demo.zip easyui\easyui-datagrid21-demo.zip easyui\easyui-datagrid22-demo.zi

    easyui-datagrid21-demo.zip

    在本压缩包 "easyui-datagrid21-demo.zip" 中,我们找到了一个关于 EasyUI Datagrid21 的演示实例,该实例包含了一个 HTML 页面、一个 PHP 后端接口以及相关的图片和数据资源。下面将对这个演示实例进行详细的解析。...

    jquery-easyui-EDT-1.5.2-build1

    jquery-easyui-EDT-1.5.2-build1 jquery-easyui-EDT-1.5.2-build1

    jquery-easyui-datagridview datagrid-detailview.js升级自定义展开按钮功能

    jquery-easyui的扩展组件jquery-easyui-datagridview,其中的datagrid-detailview.js可方便地生成子网格,但是每行均默认生成展开按钮,实际我们希望对某些行不显示展开按钮,网上很多人提供的解决方案就是通过dom...

    jQuery EasyUI jquery-easyui-1.5.5.6

    这个压缩包“jquery-easyui-1.5.5.6”包含了该框架的1.5.5.5版本,这是一份重要的更新,可能包含了一些性能优化和新功能。 在该压缩包中,有几个关键文件和目录: 1. `jquery.easyui.min.js`:这是jQuery EasyUI的...

    jquery-easyui-EDT-1.4-build1.rar

    在"jquery-easyui-EDT-1.4-build1.rar"这个压缩包中,包含了对开发者极有帮助的资源,包括CHM格式的API文档和相关的接口HTML演示文件,这将为我们深入学习和应用jQuery EasyUI提供强有力的支持。 首先,CHM格式的...

    jquery easyui datagrid demo

    `jquery-easyui-document.chm` 是 jQuery EasyUI 的官方帮助文档,通常包含了完整的 API 参考、示例代码和使用指南。这个 CHM 文件可以帮助我们深入理解整个框架,不仅仅是 Datagrid,还包括其他如对话框(dialog)...

    jquery-easyui-EDT-1.5.5.rar

    在“jquery-easyui-EDT-1.5.5”扩展中,EDT(Enhanced Data Table)是EasyUI的一个增强版表格组件,它提供了更强大的数据处理能力,如分页、排序、过滤和自定义操作等功能。这使得开发者在处理大量数据时能更加...

    EasyUI_05-datagrid-src.zip

    EasyUI 是一个基于 jQuery 的前端框架,主要用于构建用户界面,尤其在企业级Web应用中广泛应用。这个名为 "EasyUI_05-datagrid-src.zip" 的压缩包文件很可能包含的是EasyUI框架中关于datagrid组件的源代码和相关资源...

    jquery-easyui-EDT-1.4.2-build1.rar 包含中文文档

    jQuery EasyUI 官方API文档中文版 version 1.4.2 Build 1 作者:王锦阳 CSDN账号:richie696 EasyUI专题 http://download.csdn.net/album/detail/343 文档 EasyUI每个组件的属性,方法和事件。用户可以很容易地扩展...

    Easyui扩展datagrid-dnd.js,实现拖动grd的必要文件

    Easyui的扩展datagrid-dnd.js,实现拖动datagrid行到其他数据表格的必要文件

    easyui-datagrid12-demo.zip

    在“easyui-datagrid12-demo.zip”这个压缩包中,我们主要关注的是EasyUI 的 DataGrid 组件,以及可能涉及到的行内编辑功能。DataGrid 是 EasyUI 提供的一个用于展示数据表格的组件,它具有强大的数据管理能力,包括...

    很好用的jquery-easyui-EDT-1.4.5-build1

    这个“jquery-easyui-EDT-1.4.5-build1”版本是EasyUI的一个特定构建,被广泛认为是好用的版本。本文将详细介绍这个框架以及其组件,帮助读者深入理解其功能和应用。 一、jQuery EasyUI概述 jQuery EasyUI 是一套...

    jquery-easyui-1.4-patch.js

    在jQuery EasyUI 1.4版本中,用户可能遇到一个令人困扰的BUG:datagrid在加载数据时会执行两次,这不仅影响了用户体验,还可能导致服务器负载增加。为了解决这个问题,开发者们提供了一个名为“jquery-easyui-1.4-...

    jquery-easyui-1.5.1.rar

    《jQuery EasyUI 1.5.1与SpringMVC整合详解》 jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了丰富的用户界面组件,如表格、表单、对话框、菜单、滚动条等,极大地简化了网页开发过程。在1.5.1版本中,...

    jquery-easyui-EDT-1.4-build1.zip

    在这个"jquery-easyui-EDT-1.4-build1.zip"压缩包中,包含的是EasyUI的API文档和演示示例,对于学习和掌握EasyUI非常有帮助。 首先,让我们来了解一下EasyUI的核心概念: 1. **组件库**:EasyUI 提供了一系列组件...

    jquery-easyui-1.7.0.zip官方文档

    《jQuery EasyUI 1.7.0:打造高效前端界面的利器》 jQuery EasyUI 是一个基于 jQuery 的轻量级框架,它为开发者提供了一系列组件,使得构建交互式、响应式的Web应用程序变得更加简单。在1.7.0版本中,这个强大的...

    easyui datagrid-datagridview.js自己修改版

    easyui的datagridview拓展。具体的使用方法看我的博文,网址https://mp.csdn.net/postedit/85068385

    struts2+ajax+easyui+json+datagrid增删改查

    Struts2、Ajax、EasyUI、JSON 和 DataGrid 是现代Web开发中常用的技术组合,用于构建功能丰富的交互式用户界面。下面将详细解释这些技术及其在实现增删改查、分页和排序功能中的作用。 **Struts2** 是一个基于MVC...

Global site tag (gtag.js) - Google Analytics