`
liujinmarshall
  • 浏览: 117975 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

DispatchAction与validate结合的问题

阅读更多
有了DispatchAction,就可以把对一个对象的crud放在一个action里写。但和validate结合起来以后,我总是有一个问题。比如说一个UserForm和一个UserAction。在UserForm Validate的时候,一般要检查的是用户资料的完整性,比如email是否正确,年龄等资料是否填写。但如果要在UserAction里添加remove方法的时候,这时就不需要那些资料的验证,只要一个id就可以了。

那么这个时候,要分开另写一个action,然后配置不需要Form,还是会有其他的更好办法,对crud进行识别,确定要不要进行validate?我在google上找DispatchAction+validate,第一个答案就是配置几个action,对应同一个类。
分享到:
评论
8 楼 java虫 2007-04-19  
引用
其实我说的“配置几个action”就是这个意思,配置的是几个<action>而不是Action类,都是指向一个action的


奥,我理解错误。ecsun说得方法是对的。

Validator提供ValidatorForm和ValidatorActionForm这两种类,
目的就是可以在更加精确的控制执行验证的条件。
7 楼 ahau205109 2007-04-19  
配置多个action映射,没有必要吧?
为什么不直接在form加个判断?
public ActionErrors validate(ActionMapping mapping, ServletRequest request) {
    if(request.getParameter("method").equlas("save")||request.getParameter("method").equlas("update"){
        .......
    }
    else{
        return null;
    }

}
6 楼 hantsy 2007-04-19  
不要使用自动验证
5 楼 liujinmarshall 2007-04-19  
ecsun 写道
其实是有很好的解决方案的,在appfuse作者的blog中,早就有这样的解决方案提出过。
对于这个的问题,我们可以通过配置来解决问题:
一般来说,一个DispatchAction的了类如UserAction里面会有几个动作,如通常的CRUD等,同时,我们的Form又是ValidatorActionForm的子类,这个时候,我们可以这么做:
<action path="/saveUserAction" type="UserAction" paramert="method"/>
很明显,这个action的配置,我们只用它做用户的数据保存工作。
当我们要做数据的删除工作的时候,我们增加另外一段配置:
<action path="/removeUserAction" type="UserAction" parameter="method"/>
接下来怎么做呢?
那就是在我们的validation.xml中指定对哪个action进行校验了,注意,我们在这里使用的是ValidatorActionForm,它是针对 action的,而不是针对form的
那我们的validation.xml就可以这么书写:
<form name="/removeUserAction">
  <filed ....../>
</form>
这样做的话,就可以解决楼主提到的关于DispathcAction的问题了。


其实我说的“配置几个action”就是这个意思,配置的是几个<action>而不是Action类,都是指向一个action的
4 楼 wangsunan 2007-04-19  
还是没解决楼主的问题啊
3 楼 fj_opensky 2007-04-19  
ecsun 写道
其实是有很好的解决方案的,在appfuse作者的blog中,早就有这样的解决方案提出过。
对于这个的问题,我们可以通过配置来解决问题:
一般来说,一个DispatchAction的了类如UserAction里面会有几个动作,如通常的CRUD等,同时,我们的Form又是ValidatorActionForm的子类,这个时候,我们可以这么做:
<action path="/saveUserAction" type="UserAction" paramert="method"/>
很明显,这个action的配置,我们只用它做用户的数据保存工作。
当我们要做数据的删除工作的时候,我们增加另外一段配置:
<action path="/removeUserAction" type="UserAction" parameter="method"/>
接下来怎么做呢?
那就是在我们的validation.xml中指定对哪个action进行校验了,注意,我们在这里使用的是ValidatorActionForm,它是针对 action的,而不是针对form的
那我们的validation.xml就可以这么书写:
<form name="/removeUserAction">
  <filed ....../>
</form>
这样做的话,就可以解决楼主提到的关于DispathcAction的问题了。


楼上的意思是:
  不同的ACTIONPATH(或者是ACTION的名字)其实对应的是同样的ACTION类,而这个ACTION类是一个DISPATCHACTION!
  校验是针对ACTION的名字执行对ACTIONFORM的验证的!

  FROM提交ACTION:
    saveUserAction.do?method=saveUser
    removeUserAction.do?method=removeUser
 
  dispatchaction有两个方法:
     saveUser(),removeUser()

  不知道理解是否正确?
  谢谢.
2 楼 kj23 2007-04-18  
lazyvalidator
1 楼 java虫 2007-04-18  
干吗在写一个action啊

XXXAction?method=remove&model.modelId=1

就行了,action里继续从form里取那个对象,根据他的Id删,和其他方法一样。
也可以从request里直接取。

相关推荐

    DispatchAction

    与`DispatchAction`不同,`MappingDispatchAction`允许开发者通过XML配置文件来指定请求到方法的映射,而不是硬编码在Action类中。这样,开发者可以根据业务需求自由地定义请求参数与方法的映射关系,提高了代码的...

    DispatchAction实例

    在Struts框架中,`...在实际项目中,还可以结合使用`&lt;param&gt;`标签进一步细化配置,或者使用`execute`方法的重载版本来处理更复杂的逻辑。`DispatchAction`的灵活性和实用性使其成为Struts开发中的常用工具。

    struts DispatchAction

    使用DispatchAction的另一个优点是,它可以结合Struts的国际化和主题功能,为不同的用户群体提供定制的视图。此外,通过将Action类中的方法组织成逻辑相关的组,可以更方便地进行权限控制和事务管理。 然而,需要...

    struts中dispatchAction用法

    Struts是Java Web开发中的一款经典MVC框架,它的核心组件之一是DispatchAction,这个组件在处理用户请求时起到了至关重要的作用。DispatchAction是Struts提供的一个可扩展的Action类,它允许开发者将一个单一的...

    DispatchAction、LookupDispatchAction、SwitchAction的应用

    使用 **DispatchAction** 可以有效地解决这一问题。通过将这些相似的操作集中在一个 Action 中,不仅可以减少代码量,还能提高代码的可维护性和可读性。 **1.2 如何使用 DispatchAction** 为了使用 **...

    Struts中等同于DispatchAction类方法

    但是,它也存在一些潜在的问题,比如安全性问题(如果用户可以任意指定方法名,可能会引发安全漏洞)和代码可读性问题(因为业务逻辑不再与Action类的方法名直接对应)。 在更现代的Struts版本,如Struts 2,已经...

    Struts(DispatchAction) + 存储过程 => 实现分页效果

    接下来,我们将 DispatchAction 与存储过程结合,以数据库层面实现分页。存储过程是预编译的SQL语句集合,它封装了复杂的查询逻辑,可以提高执行效率,减少网络传输的数据量。 1. **配置Struts DispatcherAction**...

    struts+oracle实现DispatchAction类

    在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑处理的例子。 DispatchAction是Struts框架中的一个关键组件,它扮演着控制器的角色,...

    Struts 之 DispatchAction

    在`DispatchAction`的上下文中,这可能意味着我们有一个名为`executeAdd()`的方法,该方法将处理与添加操作相关的请求。以下是如何配置和使用`DispatchAction`的步骤: 1. **配置struts-config.xml**:首先,在`...

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证的示例

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。

    Struts2常用标签&DispatchAction.rar

    03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar

    Struts1中怎样实现DispatchAction配置多个input属性\Struts1中怎样实现DispatchAction配置多个input属性

    Struts1中怎样实现DispatchAction配置多个input属性\Struts1中怎样实现DispatchAction配置多个input属性

    SSH整合继承DispatchAction的简单例子

    在Struts配置文件(struts-config.xml)中,你需要定义ActionMapping,指定URL路径与Action类及方法的映射。同时,Spring的配置文件(applicationContext.xml)会定义Bean,包括Action类的实例,以及可能的数据源和...

    利用struts标签,dispatchAction,实现增删改查

    - **配置Action**:在struts-config.xml中,我们需要定义DispatchAction,指定其对应的类以及各个请求参数与方法的映射关系。例如: ```xml &lt;param name="operation"&gt;add ``` - **实现Action类**:在对应...

    java面试过程中遇到的问题总结

    本文总结了 Java 面试中的一些常见问题,涵盖了 Ajax 的原理、优缺点、 DispatchAction 和 Action 的区别等知识点。 Ajax 的原理 Ajax 是一种异步请求技术,通过 XmlHttpRequest 对象来向服务器发送异步请求,从...

    Struts_DispatchAction的使用

    最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助...在此谢谢各位!!

    深入解析Java的Struts框架中的控制器DispatchAction

    DispatchAction是Struts提供的一个扩展Action类,它允许在一个Action类中实现多个业务处理方法,从而解决了创建大量Action类的问题。通常,一个Action类只有一个execute()方法,但通过DispatchAction,我们可以根据...

    vue结合Echarts实现点击高亮效果的示例

    vue是一款流行的前端框架,结合Echarts可以实现复杂的数据可视化需求。 1. Echarts的基本概念 Echarts提供了多种图表类型,如折线图、柱状图、散点图等。每种图表类型都有其自己的配置项,可以根据需要进行配置。...

    速动画教程系列第13集

    5. **优点与局限性**:DispatchAction简化了代码结构,使得每个方法可以专注于单一的业务操作,但随着应用复杂度增加,DispatchAction类可能变得庞大,维护起来较为困难。这也是为什么在Struts 2中,引入了更灵活的...

Global site tag (gtag.js) - Google Analytics