项目使用的是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其实也是为了接收前台参数的,只不过这个功能很简单我没有用到它,想不到出了这样的问题,以后我要多多注意了。
相关推荐
在Action类中定义与表单字段同名的属性,Struts2会自动将请求参数值赋给这些属性。此外,Struts2还支持通过`@Param`注解来指定参数映射,使得参数注入更加灵活。 4. **内置对象获取**:Struts2提供了一系列内置对象...
在HTML表单(`<form>`)中,`action`属性是一个至关重要的元素,它定义了当用户提交表单后,浏览器应该如何处理这些数据。通常,`action`属性的值是一个URL,指示服务器端处理数据的脚本或程序的位置。然而,如果在...
本教程将详细介绍如何在Struts2的Action类中获取JSP页面传递的参数。 首先,理解Struts2的工作流程至关重要。当用户通过浏览器发送一个请求时,这个请求会由Struts2的前端控制器(DispatcherServlet)拦截。接着,...
**MVC Action 深入理解与应用** MVC(Model-View-Controller)模式是软件设计中的一个经典架构模式,广泛...在实际开发中,我们需要根据需求灵活选择Action的返回类型、参数和筛选器,以实现最佳的用户体验和性能。
例如,表单中有多个同名的input元素,如`[key1]" />`和`[key2]" />`,提交后,'key1'和'key2'将作为Map的键,对应的输入值为值。 2. **List数据绑定**: 对于List,可以声明一个泛型List类型的属性,如`private ...
总结起来,Struts2的XML表单验证是通过创建XML文件定义验证规则,然后在Action类中处理数据,通过框架自动进行验证并返回错误信息。这种方式使得验证逻辑与业务逻辑分离,提高了代码的可维护性和复用性。对于大型...
另外,域模型(Domain Model)的概念使得Action和表单数据的交互更加直观,将业务对象的实例作为Action的属性,可以方便地实现数据的封装和验证。 总的来说,Struts2的Namespace、标签和Action机制为Web应用提供了...
例如,`@Valid` 和 `@Action` 注解可以用来标记需要进行验证的方法,而 `@Param` 或 `@FieldParam` 可以定义参数的验证规则,如非空检查、长度限制等。 2. **Interceptor(拦截器)**:Struts2的拦截器机制使得在...
在Struts2框架中,可以通过在Action类中定义与请求参数同名的属性来自动绑定请求参数。当执行Action时,Struts2会自动将请求参数与Action中的属性进行匹配和绑定,无需额外的数据类型转换。这种方式简单直观,适用于...
最后,压缩包中的文件名称"Struts2_0700_ActionAttrParamInput"可能是一个关于Struts2 Action属性和参数输入的示例或者教程。这可能包含了如何配置Action、如何处理参数异常以及如何进行输入验证等内容。 总的来说...
在HTML中,表单元素通常通过`<form>`标签定义,而同名的表单元素可以使用相同的`name`属性来指定。例如,我们可能会有以下这样的表单结构: ```html <form action="submit.php" method="post"> ...
6. **POJO数据绑定**: Struts2支持直接使用POJO对象来处理表单数据,Action中可以直接定义与表单字段同名的属性,Struts2会自动进行数据绑定,无需像Struts1那样使用`request.getParameter()`。如果有多条数据,可以...
在这个表单中,有两个同名参数`name`,分别用于填充`User`对象的`name`属性和`Account`对象的`name`属性。如果在Spring MVC控制器中声明如下方法: ```java @RequestMapping("/test.action") public void test...
除了在`struts.xml`中配置,还可以在Action类同名的`strut2-validation.xml`文件中定义验证规则。这个文件包含了Action类的属性及其验证规则,可以更清晰地分离配置和业务代码。 总结起来,Example7展示了如何在...
3. **多个相同名字的参数**:对于POST请求,如果表单中有多个同名参数,`getParameter()`只会返回第一个值,而`getParameterValues()`则会返回一个字符串数组,包含所有值。 4. **安全性**:GET请求的参数是可见的...
如果表单中有多个同名参数,则`getParameter()`方法只会返回第一个值。为了获取所有同名参数的值,可以使用`getParameterValues()`方法,它会返回一个包含所有值的数组。 **示例代码:** ```java String username =...
当用户提交表单时,Struts2会自动将表单数据填充到对应的Action属性中,无需手动获取HTTP请求参数。 此外,Struts2还提供了丰富的插件系统,如Tiles插件,可以方便地进行页面布局。同时,Struts2与Spring框架的集成...
在PHP编程中,处理前端表单提交的数据是常见的...通过以上方法,你可以有效地处理前端表单中多个同名`input`元素的值。在实际开发中,还需要考虑错误处理、用户体验、数据安全等多个方面,确保程序的健壮性和安全性。
若需自定义错误信息,可以在Action所在目录下创建与Action同名的properties文件,例如PersonAction.properties,并在其中指定错误信息,如:`invalid.fieldvalue.person=无法把表单参数转换成 Person 类型`。...