项目使用的是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其实也是为了接收前台参数的,只不过这个功能很简单我没有用到它,想不到出了这样的问题,以后我要多多注意了。
本文讨论了一个AJAX提交导致的后台配置问题,通过修改参数名称解决了AJAX请求与后台Action方法参数名冲突的问题。文章详细阐述了问题定位、排查过程及最终解决方案。
51

被折叠的 条评论
为什么被折叠?



