1、可以写多个客户化validation.xml,具体配置的话不太清楚,但我看过这种配置,你或许修改一下struts-config.xml,添加一个元素,该元素就是你的验证xml,默认的xml配置是这样的:
 
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
  </plug-in>2、在validation.xml文件中有<global>属性可以定义共享数据

解决方案 »

  1.   

    谢谢!不过问题好像还没解决呀!!
    问题焦点:
    1:如何在多个 客户化validation.xml 中共享全局数据?
    2:在每个 客户化validation.xml 中如何使用非默认属性文件中的 KEY?
      

  2.   

    通常配置多个validation是为了模块化,  当你配置多个模块的时候也就有了多个struts-config-module.xml ,每个对应的struts-config-module.xml中配置validation plugin, 品且配置相应的property文件,比如在你的某个struts-config-module.xml中:
    ...
    <message-resources factory="org.apache.struts.util.MessageResourcesFactory" parameter="/com/test/application"/>   其实property文件还是所有模块公用一个的好, 可以避免重复, 最好有一个人来管理
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/config/validation/validator-rules.xml,
    /WEB-INF/config/validation/validator-rules-module.xml"/>
    </plug-in>
    ...
      

  3.   

    借楼主的问一下?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
      

  4.   

    谢谢!不过问题好像还没解决呀!!
    问题焦点:
    1:如何在多个 客户化validation.xml 中共享全局数据?
    2:在每个 客户化validation.xml 中如何使用非默认属性文件中的 KEY?问题背景:本人在问这个问题之前,已经跳过把一个系统分成若干个子系统,每个子系统分成相对独立的 WEB 模块!Struts 支持多应用模块,而且必须只有一个默认的应用模块!
    本人的问题是在每个子应用模块中,还是有很多个FROM的,应该再进一步细化!我的问题还是:
    1:如何在多个 客户化validation.xml 中共享全局数据?
    2:在每个 客户化validation.xml 中如何使用非默认属性文件中的 KEY?
      

  5.   

    问题背景:本人在问这个问题之前,已经跳过把一个系统分成若干个子系统,每个子系统分成相对独立的 WEB 模块!Struts 支持多应用模块,而且必须只有一个默认的应用模块!
    本人的问题是在每个子应用模块中,还是有很多个FROM的,应该再进一步细化!我的问题还是:
    1:如何在多个 客户化validation.xml 中共享全局数据?
    2:在每个 客户化validation.xml 中如何使用非默认属性文件中的 KEY?
      

  6.   

    1. 怎么可能成百上千的form会在同一个模块里面出现, 还是看看你的设计吧.  一个form定义一个xml想法挺好, 不过你想过没有, 文件数会爆炸性增长, 带来管理不方便, 而且多个地方引用某个form后,一旦某个地方需求变更, 那修改form会影响到其他调要地方.  本来form就是应用相关的, 某个action对应某个form, validation逻辑也会不同,独立成文件对开发来说实在不是什么好事,尤其需求变更大的项目, 我们追求开发上的模块独立性的同时通常会进一步追求功能独立性.也就是说,某个人开发某个功能一旦需求变更不会影响到别人.2. 属性文件最好使用一个, 有某个人来管理, key的命名按照某个规则就OK, 这样全局就只有一个property文件, 每个模块都使用这个property文件, 谁需要添加key,那么就需要向管理者申请, 这样可以保证property文件的命名和保证每个key的唯一性. (如果你使用多个property文件, 那么分组开发会造成将来集成的时候很多麻烦,越是到后期越是麻烦, 比如重复定义key,命名不规范等等,这是经验之谈, 我们也在一个国外的大型项目中使用过多个属性文件的办法),validation框架是在struts1.1后被整合进struts的,你用的应该是1.1以后的版本吧
      

  7.   

    谢谢 super_zzw(之支吾) 的回复!不过  好象误会我的意思了!我的问题还是没解决呀!
    为了不被大伙误会,我简单介绍一下!
    1:关于属性文件的设计
    本人的思路是把整个系统公共的属性放在一个属性文件中,本人是设计放在默认属性文件中。
    然后把数据库或实体类图中的每一个实体设计成一个属性文件,这样就可以最大程度的保证模块
    的独立性,同时保证系统一个属性只定义一次。如果需要修改,只需要修改一次,整个系统都保持
    统一。
    至于什么重复定义KEY,命名不规范,根本就是题外话。这属于管理的范畴!本人是在用自己开发的
    工具进行实体类的设计的,然后根据每个实体类自动生成属性文件的。什么重复定义,命名不规范
    根本就不可能发生。除非是人为的乱加属性,乱修改!这就是项目管理,项目组成员素质的问题。2:一个 FROM 可能被多个 ACTION 使用,但一个ACTION 只能使用一个 FROM。一个实体对象有多个属性,当然就必会有多个 FROM,一般情况下,新加和修改 可以共用一个 FROM,删除和查询可以用一个
    FROM(这个 FROM ,只有主键属性),另外针对查询条件的不同,也可以按组合索引字段的属性形成
    一个 FROM。总之定义 FROM,也不能随心所欲,要有规则,要有管理性和维护性。
    这样以来,把每一个FROM 定义一个 XML 验证规则是明智的。同时把共用的属性验证规则定义在一个
    XML 中,比如,邮政编码,手机号码,身份证号码 等等。然后在每个 FROM 中直接使用公共的属性规则。这样在修改 邮政编码 验证规则 只要在一个地方修改,保证了系统的统一性,那维管理就不言而喻了。那么我的问题还是:
    1:如何在多个 客户化validation.xml 中共享全局数据?
    2:在每个 客户化validation.xml 中如何使用非默认属性文件中的 KEY?
      

  8.   

    呵呵, 有些误解,不好意思,祝你的项目能顺利完成.1. 我不知道你所谓的全局数据是不是就是constant定义?全局使用的验证范式? 如果是的话, 那么我不知道为什么不能共享,比如你定义了一个validation-global.xml里面就只有global和constant的定义,类似validator-rule.xml文件的定义, 那么在每个模块的struts-config.xml文件中加入这个xml就能调用到对应的constant了啊. 哪个模块用到就在哪个模块的配置文件中加入这个xml就ok了啊.2. 呵呵,对于属性文件的使用, 可能你的工具足够智能化, 完全能够避免重复定义key, 比如: 在开发前期你能一下全部生成那些需要的key,而且在开发后期能保证同一个key的值不在不同的地方出现. 看来你的工具真是强大. 当然, 我相信工具能解决一些问题, 比如命名问题. 但是多个开发组并发开发时候似乎工具也很难避免重复定义相同值的key,而且你都细到把数据库或实体类图中的每一个实体设计成一个属性文件,那么一个非常大的系统中要有多少属性文件了??? 当然我不想怀你你对属性文件的使用方法, 只是通常都是一个模块对应的struts-config.xml对应一个属性文件,当然你可以定义多个. 但是我觉得一个模块使用一个属性文件都已经很难保证所有属性文件中只出现一次相同值的key定义了,何况你这种定义办法. 不提以上这些, 来所说如何解决你的问题2吧, 使用多个属性文件时候需要定义key的这个你应该知道吧, 如果你使用的是客户端js验证,那么html:javascript这个tag有个小bug(我不知道为什么实现这个tag的时候没有在tld中加入这个属性,但是后台类的资源定位中已经使用两了它,应该算是个bug吧),就是无法使用bundle,但是实际上这个属性已经在类中定义过了, 只是没有get,set方法,你只要继承一下JavascriptValidatorTag这个累,实现bundle的get,set方法,然后在tld中加入bundle的attribute, 这样在你的html:javascript tag中就可以使用bundle了, 用bundle指定你需要指定的资源文件key.就ok了.  最后说些题外话, 当然我只是个人观点和一些大型项目的经验之谈而已, 不同的公司不同的团队都有不同的做法, 最后目的都是为了使项目最大可能顺利地按照计划进行下去, 不过我们要相信"没有银弹"这个事实, 无论什么工具都只能是辅助, 最后体现的还是项目整体的管理. 除非你所在项目组的都是高手, 没有刚入门的或者经验欠缺的人.
      

  9.   

    谢谢 super_zzw(之支吾) ! 我基本看懂了你表达的意思!真的非常感谢!
    看来 Struts 目前本身还不够完善!我的思路是完全按 Struts 提供的方法实现!
    如果 自己扩展或修改 其中一部分代码,这样跟 Struts 以后的版本可能不会兼容!看完你的回复!我有一种新的思路,那就是在 validation 的基础上,修改完善它的代码!形成一个
    自己独特的版本,并且跟 Struts 完整集成!
    另外重新写几个 客户端 标签库!(修改完善 Struts 提供的几个标签库)
    日后,如果有可能,可以在 Struts 的基础上,形成一套完整的完善的符合中国项目的 新框架,连同开发工具一同发布!另外大伙不要担忧,属性文件的数量!一个项目中能管理好多少个实体类 或 数据表,就能管理好
    多少个属性文件!一般在数量庞大的实体类面前,是通过包来分类管理的,那属性文件同样是这样。同样能管理好数量庞大的 FROM,也能管理好数量庞大的验证 XML,因为一个 FROM 对应一个 XML,有统一的命名规范。同样通过包分类来管理!我的思路是侧重在项目的分析设计阶段,在详细设计完成之后,整个项目的类,视图,属性文件,验证 XML,都按统一的命名规范自动生成了,并且在工具的管理下。在接下来的代码细化阶段,基本不需要新加文件,而是完善具体的代码和功能。
    当然需求会变更,功能会增加,修改,删除,但这只会影响局部的类,视图,属性文件,XML。而这都是在工具的自动化协作下管理的。
      

  10.   

    super_zzw(之支吾) 大哥 你在吗?你看到了吗?我有个问题想请教一下!
    我目前这个能力,不谈学历,在北京我一个月能拿多钱?我正在找工作呢!
      

  11.   

    呵呵, 不好意思, 我是苏州的, 不在北京, 我有两个朋友在北京, 一个在IBM开发部,据说工资一般, 也就1.5K左右吧,学历不是最主要的,不知道你有多少工作经验(项目经验)? 不同的工作(项目)经验才有不同的工资水准, 如果你仅仅是从书上学来的, 没有经过实践检验过,那恐怕没什么公司能给你开比较高的工资吧。如果你还没有多少实践经验, 那么你还是找个相对一般的公司在实际项目中去实践一下你的理论知识吧,这样你才有找更好的公司的实力。
      

  12.   

    呵呵 , 15000元/月的意思, IT人士不会连这个都不知道吧,要是你做了5年的java应该也能拿到这个数啊
      

  13.   

    不会吧!我做JAVA差不多3年!15000元呀??真的吗??
    谁给我税后1万或8000我就好好干!!!当然15000最好!!
      

  14.   

    15.1 Tapestry介绍
    15.2 Page和组件模板
    15.3 创建Tapestry组件
    15.4 Tapestry校验子系统
    15.5 管理服务器端状态
    15.6 配置Tapestry应用
    15.7 与Spring集成
      

  15.   

    test1234() ( ) 大哥,你说的是什么呢?
      

  16.   

    为何不换种思路 ,既然验证太多, 为什么不自己写标签.
    JavaScript 想重用,为什么不写 JavaScript 自定义类.
    要动态生成,可以用 JSP EL 表达式.
      

  17.   

    哈哈哈哈!道不同不相为谋!!
    humanity(总是偷窥 Java & XML) 大哥没看懂也没理解!
    但是我明白你说的!整个项目的类,视图,属性文件,验证 XML,都按统一的命名规范自动生成了,并且在工具的管理下。在接下来的代码细化阶段,基本不需要新加文件,而是完善具体的代码和功能。
    当然需求会变更,功能会增加,修改,删除,但这只会影响局部的类,视图,属性文件,XML。而这都是在工具的自动化协作下管理的。