这个问题好,,,我也刚学 struts ,不知道啊!! 我把它提前。。

解决方案 »

  1.   

    DynaValidatorForm是通过配置文件实现的,但没见有在程序代码中实现的方法,不过这一点可自己开发一个类来实现,具体的实际方法可参考DynaValidatorForm的方法。
      

  2.   

    在bean里包括所有要显示的字段,需要那个就get哪个
      

  3.   

    首先ActionForm囊括所有可能的字段
    其次利用反射原理可以取得所有用户
    在页面上输入的 字段名--值 对,把它们放在Map
    里,在Action里就随你取用了!^_^
      

  4.   

    用map bean实现:
    1.在ActionForm中:暴露这样的两个方法:
    public Object getANameYouLike(String key);
    public void setANameYouLike(String key,Object value);2.在JSP中就可以这样使用标签了:
    <html:text property = "aNameYouLike(foo)"/>
    foo是可变的字符串
      

  5.   

    其实我觉得假如显示逻辑这么混乱的话,还不如重写页面,假如现在的确是省事了,但肯定会给以后的变更带来非常大的麻烦.个人认为,Struts中的ActionForm其实是可有可无的,验证嘛,现在的公司都有JavaScrip积累,可以不用,Action,本来就是个Servlet,可以不用,但是里面最有用的是基于Properties文件的I18N,这才是最有用的,所以假如不是支持国际化的话,Struts可以不用,完全可以用JSP+Servlet这种最基础的东西以提高性能.个人意见而已!
    我的意思绝对不是说Struts没用哈!千万不要骂我,我只是说要灵活运用而已
      

  6.   

    我调试Struts时报很多错误信息,我都不知道怎么办?
    郁闷,不知从何下手,
    是不是懂得深入才能调吧
      

  7.   

    在 formbean 里加 上你新加的 字段的 set/get 就可以了....
      

  8.   

    不知道楼主输入框的名字随便变化是什么意思????反正不管在页面上动态的增加一个字段,还是减少一个字段,ActionForm要囊括你所有可能会出现的字段,也就是<html:text peoperty="this.Name"......这个this.Name定要出现在ActionForm里,数据库当冉也要包括所以可能会出先的字段,将此段代码放到你的ActionForm里,使用Apache的PropertyUtils工具包将获得用户在页面上输入的 名称--值 对的一个Map,在Action里只需调用XXXForm.getMap即可public HashMap getMap() {
            HashMap map = new HashMap();
            Method[] methods = this.getClass().getMethods();
            
            for (int i = 0; i < methods.length; i++) {
                try {
                    if (methods[i].getName().startsWith("get") 
                            && !methods[i].getName().equals("getMap")
                            && !methods[i].getName().equals("getServletWrapper")
                            && !methods[i].getName().equals("getLog")
                            && !methods[i].getName().equals("getMultipartRequestHandler")
                            && !methods[i].getName().equals("getClass")) {
                        
                        Object value = PropertyUtils.getProperty(this, getFieldName(methods[i].getName()));
                        
                        if (value != null) {
                            map.put(getFieldName(methods[i].getName()), value);
                        }
                    }
    }
    catch (Exception e) {
    e.printStackTrace();
    }
            }
      

  9.   

    最好的解决办法就是将一个页面的全部字段都包含的ActionForm中
    这样问题就解决了
    如果你觉得不爽,你可以将写入到配置文件中,动态的生成 ActionForm
    不过这样效率会很低
      

  10.   

    我还没试动态actionForm 也不知道它怎么运行 但我敢肯定囊括所有字段是不可行的方法 哪位可以详细讲讲动态actonForm 比如说我有几十个价格输入框 都是同一性质的 应该怎么做