在昨一个后台操作action的时候发现参数传递的setter方法没有起作用 因为打出的值是null 检查了setter方法是正确的。
再setter方法中打印信息,发现setter方法没有被调用。
后来查询了一些资料 发现时因为拦截器的原因
默认的default栈里有一个默认的拦截器 params 这个拦截器是用来设值和取值的,我的这个action所在的包由于需要权限控制,设置了一个默认的拦截器 用来进行登录检查。
<package name="authority" extends="struts-default" namespace="/m">
<interceptors>
<interceptor name="author" class="authorInterceptor" />
</interceptors>
<default-interceptor-ref name="author" />
默认的拦截器覆盖了此包定义下的默认拦截器params 从而无法拦截设值。
解决方法是,指定此包下的action的拦截器params 进行参数拦截。
<!-- 权限控制包 传统 -->
<package name="authority" extends="struts-default" namespace="/m">
<interceptors>
<interceptor name="author" class="authorInterceptor" />
</interceptors>
<default-interceptor-ref name="author" />
<global-results>
<result name="login">/member/login.jsp</result>
</global-results>
<action name="book" class="bookAction" >
<result name="success" >/member/login.jsp</result>
<result name="memberIndex">/WEB-INF/webPage/UserCenter.jsp</result>
<result name="indexEditPassword">/WEB-INF/webPage/editPassword.jsp</result>
</action>
<action name="editUser" class="editUserAction" >
<result name="input">/WEB-INF/webPage/editPassword.jsp</result>
<interceptor-ref name="params"/>
</action>
</package>
分享到:
相关推荐
此外,Action类在处理请求时,还可以作为数据传输的中介,通过定义属性和提供getter、setter方法,Action类允许页面部分获取和提交数据。 我们还必须要讨论Action的配置。Action的配置通常在struts.xml文件中进行。...
### Struts2中Action间的...此外,值得注意的是,在进行Action之间的跳转时,还需要确保目标Action能够正确处理传递过来的参数,即在目标Action中定义相应的getter和setter方法。这对于确保程序的正常运行至关重要。
在Action类中,你需要为每个参数创建一个对应的私有变量,并提供对应的getter和setter方法。Struts2会自动调用这些方法,将请求参数值赋给Action的属性。例如: ```java public class MyAction extends ...
在这个例子中,`execute()`方法是Action的核心,它是Struts2框架调用的方法。当用户提交登录表单时,Struts2会调用这个方法。如果验证通过,我们返回"success",框架会根据配置的Result类型跳转到对应的页面。如果...
如果需要带参数的话可以在action中定义那个参数名paraName,并生成setter和getter方法 方法二: <script type= "text/javascript"> function formSubmit(url) { document.forms[0].action=url; document....
表单数据直接包含在Action类中,通过getter和setter方法进行访问和设置。这样设计使得Action类更容易定制和扩展。 尽管Struts 2.0的Action可以不依赖任何特定类或接口,但通常为了利用框架提供的便利性,开发者会...
总的来说,"action登陆实现,获取web元素"这一主题涵盖了Web开发中Action类的角色、依赖注入的使用以及如何处理用户输入和session状态,这些都是构建动态、交互性强的Web应用程序不可或缺的部分。
例如,我们可以在Action的setter方法中使用getBytes()方法将参数从ISO-8859-1编码转换为UTF-8编码。下面是一个示例代码: public void setTitle(String title) throws UnsupportedEncodingException { this.title ...
在Action类中,我们需要创建一个返回JSON数据的方法。这个方法通常会设置模型驱动对象(ModelDriven)或值栈(ValueStack)中的属性,这些属性将在JSON响应中暴露。例如: ```java public class MyAction extends...
如果不使用注解,Struts2会自动尝试将请求参数与Action类中的公共属性进行匹配。如果请求参数名与属性名相同,那么Struts2会自动调用相应的setter方法进行绑定。 ```java public class MyAction { private ...
此Action类中定义了两个属性`username`和`mobile`,以及对应的getter和setter方法,同时提供了两个业务方法`update()`和`save()`。 #### 四、创建校验XML文件 为了实现输入数据的有效性和格式的校验,我们需要创建...
总的来说,Struts2提供了一套灵活的参数接收机制,包括但不限于直接通过setter方法、使用注解和处理复杂类型。这种设计使得开发者可以根据实际需求自由选择最合适的参数处理方式,提高了代码的可读性和可维护性。在...
在学习Struts2的过程中,理解Action类的作用和`ActionSupport`提供的便利是非常重要的,这有助于我们更好地设计和实现Web应用的控制层。通过不断的实践和学习,你将能够熟练地运用Struts2进行复杂的Web开发。
动态方法调用允许我们不指定具体的execute方法,而是根据请求参数自动调用Action中的方法。类型转换则是指Struts2能够自动将请求参数的字符串值转换为Action属性所需的类型,如将`age`的字符串值转换为整型。 为了...
"实例中,我们将深入探讨Action类在Struts2框架中的核心作用,以及如何通过它来实现业务逻辑与视图的分离。 在Struts2中,Action类是模型层的核心组件,它是用户请求与业务逻辑处理之间的桥梁。当用户发送一个HTTP...
### Struts2框架中“No result defined for action and result input”错误解析及解决方法 #### 错误概述 在Struts2框架中开发Web应用程序时,可能会遇到一个名为“No result defined for action and result input...
ActionForm可以包含一组getter和setter方法,供Action类在`execute()`方法中访问和验证这些数据。 ```java public class MyForm extends ActionForm { private String username; private String password; // ...
当表单提交时,Struts2框架会自动从request对象中提取这些参数,并调用setter方法将值设置到Action的属性中。 ```java public class HelloWorldAction extends ActionSupport { private String account; private ...
Action类继承自`org.apache.struts.action.Action`,并重写`execute()`方法。 2. **struts-config.xml**:这是Struts的配置文件,定义了Action的映射、Form Bean、数据源等信息。例如: ```xml <action path="/...