0 0

struts2的validate在使用过程中的一个问题30

在项目中有一个添加坐席的功能:
1、在进入添加页面:salesadd.jsp页面之前,要调用一个salesAdd.do来获取小组和角色列表以供在salesadd.jsp进行选择。
2、salesadd.jsp页面填写完成以后,提交给salesAddDo.do来进行数据库的操作,在提交之前,要进行一次表单验证,用了STRUTS2的validation。
3、在struts配置文件的配置代码:
    <action name="addSales" class="salesAction" method="addSales">
        <result>/sales/salesadd.jsp</result>
    </action>
    <action name="addSalesDo" class="salesAction"
method="addSalesDo">
<result type="redirect-action">listSales.do</result>
<result name="input" type="chain">
<param name="actionName">addSales</param>
<param name="namespace">/sales</param>
</result>
    </action>
4、SalesAction-addSalesDo-validation.xml的配置:
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
<field name="name">
<field-validator type="requiredstring">
<message>请输入姓名!</message>
</field-validator>
</field>

<field name="loginName">
<field-validator type="requiredstring">
<message>请输入账号!</message>
</field-validator>
</field>

<field name="password">
<field-validator type="requiredstring">
<message>请输入密码!</message>
</field-validator>
</field>

<field name="conPassword">
<field-validator type="requiredstring">
<message>请输入确认密码!</message>
</field-validator>
<field-validator type="fieldexpression">
<param name="expression">(password eq conPassword)</param>
<message>密码和确认密码不一致!</message>
</field-validator>
</field>

<field name="groupId">
<field-validator type="requiredstring">
<message>请选择小组!</message>
</field-validator>
</field>


<field name="roleId">
<field-validator type="requiredstring">
<message>请选择角色!</message>
</field-validator>
</field>
</validators>
5、问题:在salesadd.jsp表单提交,执行salesAddDo.do验证失败的时候,提示:
   # Messages:  No result defined for action com.kcc.sales.action.SalesAction and result input
   无法正常跳转到salesadd.jsp页面。
6、解决5的问题:
   <action name="addSales" class="salesAction" method="addSales">
        <result>/sales/salesadd.jsp</result>
       <result name="input">/sales/salesadd.jsp</result>
    </action>
   又出现新的问题:
   在跳转到的salesadd.jsp页面,无法取到小组和角色列表。
7、如果在struts中配置:
   <action name="addSalesDo" class="salesAction"
method="addSalesDo">
<result type="redirect-action">listSales.do</result>
<result name="input" type="redirect-action">addSales</result>
    </action>
   在salesadd.jsp中又无法获取fieldError的提示信息。
   寻求帮助,谢谢。
问题补充:
SalesAction-addSalesDo-validation.xml和SalesAction在同一个包下面。
问题补充:
SalesAction-addSalesDo-validation.xml是针对某个方法来进行验证的。
问题补充:
kyo100900,很感谢你的回答,可以看步骤3。最开始就是用的chain
问题补充:
hua0424,您好,用chain,出现的问题是第五,第3中的配置就是chain
问题补充:
qinzy1983您好,我如果直接返回到/sales/salesadd.jsp 页面,我将获取不到待选择的小组和角色。
问题补充:
hua0424,您好,我增加value,还是报错:
# Messages:  No result defined for action com.kcc.sales.action.SalesAction and result input
和第五步骤的报错一样
问题补充:
问题解决了。nnd,研究了差不多一天的时间:修改如下:
<action name="addSales" class="salesAction" method="addSales">
<interceptor-ref name="chain" />
<interceptor-ref name="basicStack" />
<result>/sales/salesadd.jsp</result>
</action>
<action name="addSalesDo" class="salesAction"
method="addSalesDo">
<result type="redirect-action">listSales.do</result>
<result name="input" type="chain">
<param name="actionName">addSales</param>
<param name="namespace">/sales</param>
</result>
</action>

也就是增加了一个:
<interceptor-ref name="chain" />
<interceptor-ref name="basicStack" />
2008年6月02日 11:10

5个答案 按时间排序 按投票排序

0 0

<result name="input" type="chain">
<param name="actionName">addSales</param>
<param name="namespace">/sales</param>
</result>
改成
<result name="input" type="dispatcher">
/sales/salesadd.jsp
</result>

2008年6月02日 13:21
0 0

<result name="input" type="chain">
<param name="actionName">addSales</param>
<param name="namespace">/sales</param>
</result>

这个不成功是因为你没有指定这个result的VALUE,你仅仅是指定了actionName,namespace。这些都不重要,最重要的返回结果value没有指定,改成
<result name="input" type="chain">
<param name="actionName">addSales</param>
<param name="namespace">/sales</param>
<param name="value">addSales</param>
</result>
其实<param name="actionName">addSales</param>
<param name="namespace">/sales</param>
不是必须的

2008年6月02日 13:15
0 0

楼上是正解,用chain可以保存valueStack里的属性值,redirect-action就会清空之前的属性值

2008年6月02日 13:10
0 0

<result name="input" type="redirect-action">addSales</result> 

改成
<result name="input" type="chain">addSales</result> 
试试

2008年6月02日 12:55
0 0

validators這個配置文件的名字必須是   salesAction-validation.xml  且必須和salesAction這個類在一個包里面, 你是這樣的嗎?

2008年6月02日 11:28

相关推荐

    struts2 validate 验证

    你提到的`TestValidate`可能是一个测试用例,用于演示如何在Struts2中使用`validate`进行数据验证。通常,它会包括一个Action类,里面包含验证方法,以及对应的配置文件条目。测试时,模拟用户输入,检查验证是否按...

    struts1.2 validate 源代码 实现

    2. **验证方法**:在ActionForm子类中,你需要定义一个`validate`方法。此方法的签名通常是`public ActionErrors validate(HttpServletRequest request)`。在这个方法里,你将对每个表单字段进行检查,如果发现不...

    Validate_code.rar_struts valida_struts valida_struts validate_v

    这个项目的名称暗示了它可能用于演示如何在Struts应用中使用验证代码。 `www.pudn.com.txt`可能是从网站pudn.com下载的文档,通常这类文件会包含一些附加信息,如下载来源、版权声明等,也可能包含了与Struts验证...

    Struts2+jquery.validate框架实现用户名是否存在

    本文将深入探讨如何利用Struts2框架与jQuery.validate插件来实现一个实用的用户名唯一性检查功能,确保新注册的用户名在数据库中不存在,从而避免重复注册的问题。 ### Struts2与jQuery.validate框架简介 #### ...

    STRUTS和WEBWORK在VALIDATE的区别

    STRUTS和WebWork都是Java Web开发中的两个著名框架,它们在处理表单验证(VALIDATE)时有各自的特点和差异。这篇博文将探讨这两者在验证机制上的区别,帮助开发者更好地理解它们的工作原理和适用场景。 STRUTS是...

    STRUTS validate 配置简介

    在STRUTS中,为了启用表单验证功能,你需要创建一个FormBean类,并让它继承自`org.apache.struts.validator.ValidatorForm`。例如,创建名为`GtsfFrm`的FormBean,包含一个名为`hh`的属性,用于存储用户输入的户号...

    自定义 validate验证 struts1框架

    2. **添加验证方法**:在ActionForm子类中,你需要为每个需要验证的字段添加一个对应的`validate`方法。这些方法通常以`validateField`的形式命名,例如`validateName`、`validateEmail`等。在这些方法内部,你可以...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    - 为了克服这些问题,Apache Software Foundation推出了Struts2,这是一个全新的框架,虽然名称相似,但实际上与原始的Struts框架有着本质的区别。 - **Struts2的特点**: - 更强大的MVC架构支持。 - 内置拦截器...

    Struts的验证框架Validate使用[1]

    Struts的验证框架Validate是Apache Struts框架中的一个重要组成部分,主要用于处理用户输入的数据验证。在Web应用程序中,数据验证是确保用户提交的信息符合业务规则的关键步骤,防止非法数据进入数据库或引发程序...

    [浪曦原创]Struts系列 第6讲 Struts的验证框架Validate使用续二(zk001)

    在Struts的第六讲中,我们主要探讨了如何有效地利用Validate进行数据校验,以确保用户提交的信息符合应用程序的要求。 Struts的验证框架提供了一种声明式的方式来定义验证规则,这些规则可以在ActionForm类的子类中...

    struts2学习笔记

    Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中广泛使用,提供了丰富的功能和灵活性。下面将详细讲解Struts2的一些核心知识点。 **一.Struts2核心文件:struts.xml配置** Struts2的...

    在struts2里,完成登录页面,使用validate对输入数据进行校验,用户名必填,密码必填且长度大于6

    在这个场景中,我们要实现一个登录功能,并且使用Struts2的validate方法来对用户输入的数据进行验证。下面我们将详细讲解这个过程。 首先,登录页面通常是一个JSP文件,它包含两个主要的输入字段:用户名和密码。在...

    转:struts1与struts2的区别

    - **Struts2**: 在Struts2中,为每个HTTP请求创建一个新的Action实例,从而避免了线程安全问题。这一改变极大地简化了代码编写,并降低了出错的可能性。尽管servlet容器会为每个请求创建多个临时对象,但并不会对...

    Struts1与Struts2本质区别

    - **Struts 2**:每个请求都会创建一个新的Action实例,消除了线程安全问题,同时也减少了开发者在处理并发请求时需要考虑的问题。 #### 3. Servlet依赖方面的对比 - **Struts 1**:Action的方法签名中包含了`...

    Struts2输入校验总结

    2. **异常处理与错误封装**:如果类型转换过程中遇到问题,如无法正确转换数据类型,会抛出异常。这些异常会被捕获并封装到`fieldError`对象中,存储在`ActionContext`中,以便后续的拦截器处理。 3. **反射调用...

    jquery和struts2的整合

    在这个名为`StrutsJqueryDemo`的项目中,开发者创建了一个简单的示例,展示了如何整合jQuery和Struts2。可能包括一个Action类处理请求,一个JSP页面用于展示结果,以及一些配置文件如`struts.xml`。通过运行这个Demo...

    struts2 表单标签的使用

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理HTTP请求、展现页面以及管理业务逻辑。在Struts2中,表单标签是用于构建用户界面的重要组件,它们帮助开发者创建交互式和动态的网页。这篇...

    struts-validate

    在深入探讨Struts框架中的`struts-validate`概念前,我们先来理解一下Struts框架本身。Struts是一个开源的MVC(Model-View-Controller)框架,用于简化Java Web应用程序的开发。它提供了一种结构化的方法来构建Web...

    struts1与struts2本质区别

    - **Struts2**:每个请求都会创建一个新的Action实例,消除了线程安全问题。这种模式使得Action设计更加简单直接,减少了因线程安全考虑带来的额外工作。 #### 三、Servlet依赖的对比 - **Struts1**:Action类直接...

    Struts2和Struts1的什么区别

    在探讨Struts2与Struts1的区别时,我们需深入理解这两个框架的设计理念、架构模式以及它们在实际应用中的表现差异。以下将从多个角度详细分析这两种流行Java Web框架的不同之处。 ### 1. **Action类的区别** #### ...

Global site tag (gtag.js) - Google Analytics