请教高手 struts中:
有两个form表单,loginForm表单保存了用户的姓名和密码。另一个buyForm表单保存了购买的物品,但是没有保存用户的姓名,buyForm表单提交之后,我想在buyAction.java里面获取loginForm表单里面的用户姓名,赋给buyForm,让buyForm里面有用户的信息。
应该怎么实现?希望有详细一点的代码..谢谢各位..

解决方案 »

  1.   

    buyForm表单内可以放一个struts的hidden标签,用于保存用户名(后台buyAction.java内必须声明一个和hidden的name属性相同的字段),提交buyForm表单时后台buyAction.java自动解析hidden标签,由name判断从前台哪里获取值。buyAction.java:
    ……
    private String userName;[color=#008000]//拥有get和set方法
    ……[/color]前台:
    <s:form>
    <s:hidden name="userName" />
    </s:form>
      

  2.   

    buyAction.java: 
    …… 
    private String userName;//拥有get和set方法
    ……
      

  3.   

    自我感觉你的再buyForm表单里添加loginForm表单的一个name属性,不添加他们之间的联系就建立不起来啊
      

  4.   

    要不就把loginForm表单的一个name属性放到session中
      

  5.   

    将登录信息放在会话session作用域中在buyForm里面直接获取就可以了
      

  6.   

    <s:form> 
    <s:hidden name="userName" /> 
    </s:form>
      

  7.   

    如果在同一个页面   javascript传值就可以了
    如果不再同一个页面  放入一个jsp的作用域中就可以了
      

  8.   

    楼主 你这样的思想是不对的。一般登陆之后会将登陆信息放到session中的。你的登陆信息比较少用户名和密码。但是大程序登陆信息就很多了,比如说我是做bss项目,登陆信息里包括营业员名称,营业员ID,营业员权限。营业员所在网点,密码等信息。放在session里是比较方便的。什么时候用 什么时候就取了!
      

  9.   

    我觉得在buyAction.java 加上private LoginForm loginForm = new LoginForm();一个成员属性.然后生成get,set方法.最后在jsp上:
    <s:form> 
    <s:hidden name="loginForm.userName" /> 
    </s:form>
    不是更好的运用聚合吗?
      

  10.   

    用户的登录信息肯定要在session中保存的吧,如果不保存也就没有必要登录了不是
    如果是编辑别的用户然后在下一页中需要用到编辑的内容的话传一个id过来查询一下可否?
      

  11.   

    谢谢大家的指导!
    我在buyForm表单里面加了一个隐藏域:
    <html:hidden property="user_name" value="<%=username%>">
    然后 再定义一个bean 在session中获取loginForm表单里面的用户姓名:
    <bean:define id="username" name="loginForm" property="users_name" type="String">
    这样的话 这个bean 也就是username 就可以在loginForm中取到用户姓名 并可以赋给那个隐藏域了.
    然后 就可以提交buyForm了..
    谢谢大家了...嘿嘿!
      

  12.   

    放到session里,或者在
    buyAction.java: 
    …… 
    private String userName;//拥有get和set方法 
      

  13.   

    [align=right]