ActionForm的reset方法就是设置初始直的
   private String sex;   public String getSex() {
      return sex;
   }   public void setSex(String sex) {
      this.sex=sex;
   }   public void reset(HttpServletRequest request,...) {
      ses="f";
   }

解决方案 »

  1.   

    Action中得到ActionForm
    ActionForm bean=(ActionForm)request.getAttribute("mappingName");//or session
    String sex=bean.getSex();
    if(sex.equals("f")) {
       ...
    }
      

  2.   

    谢谢,不过我还是不明白,我觉得以其用struts那些麻烦的tag去判断,而且很难控制页面的美观效果,还不如用传统的表单,比如根据用户是否登录成功了,输出到jsp页面两种界面,我怎么输出呢?
      

  3.   

    EQsay() :这样的话Action里面不是有很多的html代码了,这样好么?最后Action也是要mapping.findForward的,还是没法输出啊?怎么让她保存起来然后jsp页面调用一个bean之类的东西输出那?
      

  4.   

    application.properties文件里面是没法添加逻辑判断之类的东西的吧,我估计如果我把所有的输出全部放在这儿,那不是将来会非常大,一个商城的html代码都在里面最起码几万行啊 ……
      

  5.   

    楼主一直没有提到ActionForm,不知你在学习struts的时候有没有看到这一块了,ActionForm最主要的功能就是负责从action往jsp页面输出数据用的。
    ApplicationResources.properties文件的作用主要是国际化,如果你不考虑国际化的问题完全没有必要使用。
    在jsp页面内要进行输出操作时,struts提供了很多标记,如bean,html,logic,等等,我想你需要先学学这些struts的基础内容才好。
    现在说说你的问题:
    1、要从action输出数据到jsp页面,可以把数据装入这个jsp页面对应的ActionForm,actionForm里的属性都对应jsp页面上的特定标记,用return mapping.findForward("xxx")进行页面跳转后,actionForm里的内容就自动填入jsp页面上的标记里了。
    2、你要实现的是jsp页面上有多个单选框,然后自动选中吧?
    在actionForm里设置一个属性(比如sex),首先访问你的action,把用户的性别信息存入这个属性(比如man或woman),在你的jsp页面上的单选框用struts的单选框标记
    <html:radio property="sex" value="man"/>
    <html:radio property="sex" value="woman"/>
    这样,从action跳转到这个jsp后,根据actionForm里的值,这些单选框就会自动对应的选中了。
      

  6.   

    IceCraft(心淡情浓) :谢谢你,我一直认为ActionForm是处理数据的,并不负责输出,你这么说我就明白了,我还有最后一个问题,请你告诉我,比如用户成功登陆了就显示很多表格很多图片和页面,如果没有成功就显示另外很多的界面,在jsp里面采用标签逻辑判断然后可以显示出不同的界面是么,比如这个例子:<logic:present name="userInfoForm">
    <H3>
      <bean:message key="main.jsp.welcome"/> 
      <bean:write name="userInfoForm" property="username"/>!
    </H3>
    </logic:present>那么我的jsp里面是不是可能出现
    <logic:present name="userlogin">
    里面很多的图片表格之类的,都可以是普通的html,需要判断的表单元素采用struts的标签
    </logic:present>但是如果没有登录怎么判断?<logic:present name="usernotlogin"></logic:present>这样的概念?谢谢你马上给你结分!
      

  7.   

    再说一点,struts最大的好处是把从前jsp页面里的java代码提取出来放到action里做,jsp和action中间的数据传递通过每个jsp页面对应的一个actionForm来完成。
    并不是你认为的在action里输出html代码。简单点说,用struts开发时,首先用纯html语言画出你的界面效果,
    然后把html页面上的form标记,比如<input type="text"/><input type="radio"/><input type="checkbox"/>等等,
    全部用struts的标记来替换(其实也可以不替换,struts的标记最终会被翻译成html代码的,只要把每个标记的属性设置正确),如<html:text/><html:radio/><html:checkbox/>等等。
    struts的标记有一个property属性,为每一个property属性赋值,如<html:text property="userName"/>
    然后书写这个jsp对应的actionForm类,这个类需要很多属性,每个属性名就对应jsp界面上的property名,生成这些属性的get和set方法,实现reset方法(初始化属性值)。
    最后来写你的action类,你可以从actionForm中得到界面提交的数据,也可以把要显示到界面的数据放到actionForm里,让它自己去填充界面。
    还要编写struts的配置文件,你可以用struts console这个软件很轻松的完成配置。
    推荐你两本书:
    清华大学出版社的《Jakarta Struts编程》    我觉得这本书用来学习struts原理不错
    电子工业出版社的《精通Struts 基于MVC的JavaWeb设计与开发》   这本实用性比较强
      

  8.   

    谢谢IceCraft(心淡情浓)和EQsay(),结贴!
      

  9.   

    你说的是用户验证的问题,确实可以用logic标记来判断actionForm里的一个属性值,然后显示不通的内容。最好的方法是把用户登录成功和登录失败的页面分成两个jsp来做。这样你只需要在action里进行用户验证,如果成功你就用return mapping.findForward("xxx")跳转到用户登录成功的jsp去,如果不成功就跳到登录失败的jsp去。
    action里:
    if(登录成功)return mapping.findForward("loginSuccess");
    else return mapping.findForward("loginFailure");
      

  10.   

    我明白了,以前我用javabean也是这样做一部分的,虽然页面多一些但是方便不少呵呵,谢谢你啊,热心的人!