`
clrw
  • 浏览: 20840 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

表单参数和action中定义的对象同名导致strutr2的action路径错误

 
阅读更多

项目使用的是ssh,struts是用的2。

今天做了一个很简单的意见反馈功能,就是一个提交一个textarea的内容到后台,问题来了,点击提交后后台没有反应,第一反应是action的配置可能弄错了,反复检查配置文件等等,都是正确的,于是我将请求地址直接粘贴在浏览器里访问:

http://127.0.0.1:8080/myStore/es_baseinfo_opinion/saveOpinionAction.action

 返回的是正确的json数据:

{"callbackMessage":{"messageID":"0","messageInfo":""}}

 看来可以确定配置是没有问题的,我又回到功能页面点击提交按钮,问题依旧,此时我再按上面的方式在浏览器里访问该地址,报错了:

java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [opinionAction]

 顿时觉得非常奇怪,刚开始在浏览器里访问不是正常的吗,怎么回到功能提交失败后,浏览器里直接访问也报错了呢?反复检查、替换代码后,发现页面提交表单的地方:

$.ajax({
    type: "POST",
    url: "${pageContext.request.contextPath}/es_baseinfo_opinion/saveOpinionAction.action",
    data: {"operation": "add",
               "opinion": $.trim($("textarea[name='opinion']").val())},
    ...
    后面的代码省略

 这里有一个参数是opinion,就是用户录入的意见内容,而我的action里有一个opinion对象:

@Controller("opinionAction")
public class OpinionAction extends ActionSupport implements RequestAware {
    private int total;
    private Opinion opinion;
    ...
    后面的代码省略

 现在我想应该是前台的参数opinion和后台的这个Opinion对象重名导致这个问题的出现,于是我将前台ajax提交的那段代码里的opinion改成了content,再点击功能里的提交,问题解决。

 

action里的这个Opinion其实也是为了接收前台参数的,只不过这个功能很简单我没有用到它,想不到出了这样的问题,以后我要多多注意了。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics