`
kyo100900
  • 浏览: 639758 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2需要注意的一个小地方

阅读更多

今天在运行Struts2时,无意间发现程序在写Struts.xml有这样的问题:

以下是本人一个Action映射的配置文件

xml 代码
  1. <action name="saveExhibitionAppTable"  
  2.             class="cn.gov.tdb.controller.EnterpriseController"  
  3.             method="saveExhibitionAppTable">  
  4.             <result name="input">exhibitionAppTable.jspresult>  
  5.             <result name="success" type="redirect-action">  
  6.                 generateBarcode.tdbdb?getTichetSource=${getTichetSource}&companyId=${companyId}&serviceId=${serviceId}   
  7.             result>  
  8.         action>  

 

没有什么特别的地方就是在

xml 代码
  1. <result name="success" type="redirect-action">  
  2.                 generateBarcode.tdbdb?getTichetSource=${getTichetSource}&companyId=${companyId}&serviceId=${serviceId}   
  3.             result>  
这里返回的是一个redirect-action, ${getTicketSource}等这三个参数是这个Action的三个属性(有get,set方法的),我想把它们传给generateBarcode.tdbdb, 却发现一直取不到这三个传过来的参数,空指针报错.
然后我又把配置文件改成如下,弄成generateBarcode.jsp发现值确实已经传过来了,看来Struts2在redirec-action的时候已经处理过了.
xml 代码
  1. <result name="success">
  2.                 generateBarcode.jsp?getTichetSource=${getTichetSource}&companyId=${companyId}&serviceId=${serviceId}   
  3.             result>  
查了查Strut2的文档,发现有以下配置,也就是说这个时候把要传递的参数如果分开来的话,通过redirec-action也是可以正常传过来的.
xml 代码
  1. <action name="saveExhibitionAppTable"  
  2.             class="cn.gov.tdb.controller.EnterpriseController"  
  3.             method="saveExhibitionAppTable">  
  4.             <result name="input">exhibitionAppTable.jspresult>  
  5.             <result name="success" type="redirect-action">  
  6.                 <param name="actionName">generateBarcodeparam>  
  7.                 <param name="namespace">/param>  
  8.                 <param name="getTichetSource">${getTichetSource}param>  
  9.                 <param name="companyId">${companyId}param>  
  10.                 <param name="serviceId">${serviceId}param>  
  11.             result>  
  12.         action>  

 

大家注意过这个问题吗?

分享到:
评论
16 楼 cd_tiger 2008-09-22  
我的做法很简单
type改为type="redirct"
在结果中加入扩展名字
15 楼 huobao89 2008-09-18  
谢谢呀 
14 楼 xskowscut 2008-08-05  
 
13 楼 runjia1987 2008-05-01  
我一般都不写"type='redirect-action'"
12 楼 moonzhao 2008-02-29  
<param name="companyId">${companyId}<param>

如果是一个类的属性:
比如
<param name="company.companyId">${company.companyId}</param>

好像有点问题
11 楼 jiayanchang 2008-01-21  
action name="saveExhibitionAppTable"  
            class="cn.gov.tdb.controller.EnterpriseController"  
            method="saveExhibitionAppTable">  
            <result name="input">exhibitionAppTable.jspresult>  
            <result name="success" type="redirect-action">  
                <param name="actionName">generateBarcodeparam>  
                <param name="namespace">/param>  
                <param name="getTichetSource">${getTichetSource}param>  
                <param name="companyId">${companyId}param>  
                <param name="serviceId">${serviceId}param>  
            result>  
        action>  


这个在后台会提示在ognl了没有相应的属性,是会报异常的,虽然在页面上没问题,但还是不可取的
10 楼 jiayanchang 2008-01-21  
好贴  救我一命
9 楼 xuejianshan 2007-12-27  
学习之中~~ 
8 楼 musing 2007-11-08  
楼主有没有群,能否把我加上去?
7 楼 musing 2007-11-08  
 &_amp;_ companyId=${companyId}

把两个_去掉
6 楼 musing 2007-11-08  
&amp;companyId=${companyId}

改成这样就可以完善解决问题
5 楼 yufei 2007-10-26  
不好意思,上一个回答好像只能回答
<result name="success" type="redirect-action">  
                generateBarcode.tdbdb?getTichetSource=${getTichetSource}&amp;companyId=${companyId}&amp;serviceId=${serviceId}   
            </result>

<result name="success">
                generateBarcode.jsp?getTichetSource=${getTichetSource}&amp;companyId=${companyId}&amp;serviceId=${serviceId}   
            </result> 
不同运行情况的问题

-
-

后面这个问题也不太清楚,最近也没时间弄,提一下redirect-action和redirect是不一样的
redirect-action的actionName是重定向到action名
redirect的actionName是action执行后的跳转路径
(以上解释摘自webwork官方文档)
你可以试着把下面这句中间那部分声明称一个action,再在这里配置actionName或者改用redirect试试
<result name="success" type="redirect-action">  
                generateBarcode.tdbdb?getTichetSource=${getTichetSource}&amp;companyId=${companyId}&amp;serviceId=${serviceId}   
            </result>
4 楼 kyo100900 2007-10-25  

<result name="success" type="redirect-action">  
                <param name="actionName">generateBarcode</param>  
                <param name="namespace">/</param>  
                <param name="getTichetSource">${getTichetSource}</param>  
                <param name="companyId">${companyId}</param>  
                <param name="serviceId">${serviceId}</param>  
            </result>  
却能正常传参数,怎么解释呢?
3 楼 yufei 2007-10-25  
redirect-action 是重定向,是服务器让浏览器重新发送一个请求过去,这时候request的参数肯定会丢失的(象servlet里,response.sendRedirect("url"))
struts2 默认是dispatcher,这个是服务器端转向,在服务器端执行,(象servlet里,request.getRequestDispatcher("url").forword(request,response))
2 楼 kyo100900 2007-10-22  
不知道这算不算Struts2的Bug呢?
1 楼 lijie250 2007-10-22  
我遇到这个问题!但是我也是按照你的第一种写法 写的!
在ACTION里处理了下!如果遇到空就赋初值!

相关推荐

    struts2中导入类库时需要注意的问题

    Struts2是一个流行的Java web应用框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在使用Struts2进行web开发时,正确导入并配置所需的类库是至关重要的。本文主要针对在导入struts2框架的jar包时可能出现的...

    struts-menu集成struts2.3.1例子以及注意的地方

    4. **配置Struts2**:在`struts.xml`配置文件中,需要定义一个Action来处理菜单的显示,以及相关的Result类型。这通常涉及到自定义拦截器或者标签库。 5. **使用`struts-menu`标签**:在JSP页面中,使用`struts-...

    Struts2升级到2.5.30,问题解决及过程记录

    总之,Struts2的升级是一个涉及多方面考虑的过程,需要细心规划和执行。通过更新依赖库、调整配置、适配API变化,并进行充分的测试,我们可以确保平滑地过渡到新版本,同时享受到新版本带来的性能提升和功能增强。

    struts2介绍及应用

    Struts2是一个强大的Java Web应用程序框架,用于构建和维护可扩展、高效且易于维护的Web应用。它是Apache软件基金会下的一个开源项目,基于Model-View-Controller(MVC)设计模式,提供了高度灵活的控制层,使开发者...

    Eclipse中配置Struts2项目指南

    2. 安装 Tomcat:下载并解压缩 Tomcat,拷贝到一个地方,需要注意的是需要把 JDK6 目录中的 tools.jar 拷贝到 Tomcat 中的 lib 目录下。 3. 安装 Eclipse:下载并解压缩 Eclipse,得到一个 eclipse 目录,把这个目录...

    struts2Jar

    9. **异常处理**:Struts2提供全局异常处理机制,可以在一个地方集中处理所有Action可能出现的异常。 10. **国际化与本地化**:Struts2支持多语言环境,可以轻松实现应用程序的国际化和本地化。 在实际开发中,...

    struts2整合hibernate

    5. **事务管理**:由于多个数据库操作可能需要在一个事务中完成,因此需要管理事务的开始、提交和回滚。这通常在Service层实现,Service类调用DAO方法,并在需要的地方开启和结束事务。 6. **分页查询**:在描述中...

    Struts2整合Spring、JPA

    定义一个`EntityManager` bean并配置数据源,然后在需要的地方注入`EntityManager`,就可以进行CRUD操作。 ```xml &lt;!-- Spring 配置 --&gt; &lt;!-- 其他配置,如jpaVendorAdapter、persistenceUnitName等 --&gt; ...

    Struts2乱码终极解决办法

    在开发基于Struts2框架的应用时,经常遇到的一个问题就是中文乱码。这不仅影响用户体验,还可能导致数据处理错误。本文将详细介绍如何彻底解决Struts2中的乱码问题,并提供实际可行的解决方案。 #### 二、乱码产生...

    struts2实现文件下载实例源代码

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中。在Struts2中实现文件下载的功能,可以帮助用户从服务器获取并保存文件到本地计算机,例如这里的"1.xls"文件。下面我们将深入探讨...

    Struts2国际化Demo

    2. **配置Struts2**:在`struts.xml`配置文件中,我们需要定义一个拦截器栈,其中包含`i18n`拦截器。这个拦截器负责处理用户请求中的语言信息,并将当前语言设置到Action上下文中。 ```xml ... ... ...

    struts2+spring2+ibates

    1、分别导入三个框架需要的包。 2、写pojo. 3、配置web.xml (分别配置sping,struts) 4、写sping的application和applicationservices或者其它配置.(可对些文件分为其它文件,在web.xml中注册即可) 5、配置struts.xml ...

    最详细eclipse配置struts2

    2. 安装 Tomcat:下载 Tomcat,解压缩后拷贝到一个地方,需要把 JDK6 目录中的 tools.jar 拷贝到 Tomcat 中的 lib 目录下。 3. 安装 Eclipse:解压缩下载的 lomboz,得到一个 eclipse 目录,把这个目录拷贝到一个...

    struts2文本编辑器(ckeditor),简单调用不需要多余配置

    6. **与Struts2整合**:为了使CKEditor能与Struts2的文件上传功能结合,你需要配置Struts2的FileUpload拦截器,并创建一个处理上传的Action。记得配置`struts.multipart.saveDir`以指定临时文件存储位置。 7. **...

    Struts2 S2-033漏洞分析1

    Struts2 是一个基于 Java Web 应用程序的框架,它的下一代产品 Struts 2 是在 Struts 1 和 WebWork 的技术基础上进行了合并的全新的框架。Struts 2 的体系结构与 Struts 1 的体系结构差别巨大,Struts 2 以 WebWork ...

    Struts2入门案列

    8. ** strut2的安全问题**:`Struts2SecDemo`可能涉及到Struts2的安全实践,如防止XSS、CSRF等攻击,这提醒我们在使用Struts2时需要注意安全配置,及时更新框架以修补已知漏洞。 9. **程序调试**:了解如何设置断点...

    struts-2.3.35相关jar包

    Struts 2是Java开发企业级Web应用的一个流行框架,它基于Model-View-Controller (MVC)设计模式,提供了一种结构化和可扩展的方式来处理应用程序的逻辑。标题提到的"struts-2.3.35相关jar包"指的是Struts 2框架的特定...

    struts2+hibernate+spring源码

    将这数值弹出一个alert并且发信给指定的邮件地址 获取页面内所有地方的以"&lt;&lt; &gt;&gt;"为标示的这个符号代表书名号,获取之中的内容 使用正则表达式&gt;&gt; 功能点: 1)URL抓取页面。 2)正则表达式匹配。 3)邮件系统调用 请注意...

    struts2.zip

    Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,由Apache软件基金会维护。它提供了一种用于构建企业级应用程序的结构化和灵活的方法。Struts2的核心是Action类,它负责处理HTTP请求,并...

    Struts2学习笔记

    - **用途**:在Struts2中,OGNL被广泛用于配置文件、标签库、拦截器等地方。 - **语法**:OGNL使用简单的语法来表示对对象属性的访问和操作。 #### 04 Struts2-Tags - **标签概述**:Struts2提供了丰富的标签库,...

Global site tag (gtag.js) - Google Analytics