本人超级菜鸟 第一次接触struts 紧急求助ing 
现在有个页面是struts的LonginForm 一个userID和password。 forward to LoginAcction 
在LoginAction里getPassword();就可以得到password,对吧? 
<fmt:message key="userid" /> 
<html:text styleId="userId" tabindex="1" property="userId" size="50" styleClass="textField_std" errorStyleClass="textField_error"> </html:text> <fmt:message key="password" /> 
<html:password styleId="password" tabindex="2" property="password" size="50" styleClass="textField_std" errorStyleClass="textField_error" /> 我需要再加一个验证码,要把验证码和密码一块加密,然后把加密后的这个block当成密码送过去。 
解密先不用考虑。。能传过去就行 
由于这个loginAcction我不能修改 
所以想把验证码的property也放成"password",然后用JavaScript加密密码和验证码,
得到encryptionblock,再setPassword(encryptionblock)。这样Action 得到的就是encryptionblock了。。 
不知道这可以实现不?多谢了先 所以有两个问题: 
1》现在submit的时候直接执行loginAcction的,怎么能before这个,先叫javascript加密。 
2》怎么把加密后的block 代替原来的密码送过去,使得在loginAction里面getPassword时,直接得到这个block? 
我有表达清楚吧?呵呵 最近为了这个问题纠结两天了。。
请高手指点啊 

解决方案 »

  1.   

     第一个问题,在表单提交前,submit可以用个onclick事件来进行javascript加密.第二问题,每一个标记都是一个dom对象,可以用javascript操作dom为密码标记重新赋值.我是根据理解上的解法,具体实际没做,你这样肯定行的.
      

  2.   

    <html><head>
    <script type="text/javascript">
    function encript(){
    var name = document.getElementById('userName');
    alert(name.value);
    name.value='world';
    alert(name.value);
    alert('hello');
    return false;
    }
    </script>
    </head>
    <body>
    <form action="http://www.sina.com.cn" method="post" onsubmit="return encript()"> 用户名:<input id="userName" type="text" name="userName"/><br>
    <input type="submit"  value="submit"/>
    </from>
    </body>
    </html>
    通过这段代码测得可以这样子用.你的标题写得像数据已经发到服务器了.
      

  3.   

    先谢谢谢谢ls的热心人
    如果是单纯的jsp 我觉得我可以实现这两个
    但是是struts。。麻烦您看我贴的代码 password本来都有个property=password 而且
    这个loginForm里已经只有这两个getProperty(useId),getProperty(password). setproperty(userID), setproperty(password)的。
    所以呢 我必须把验证码 的property也设置成password, 然后用js加密验证码和密码,得到block,再setPassword(block);
    哎 不知道两个label可以用同一个property不?
    况且我试过onclick去加密,不知道有没有执行到js?我知道jsp里面肯定可以了
    但是这个strut 他submit时 没有post到那啥的 有servlet-config.xml在,他自己就去loginAction了。。这个在这之前叫JavaScript,能真正执行吗?有人做过这样的吗
      

  4.   

    对的,原来来的userid和password是可以正常传到服务器上的呀 这个页面可以正常工作的
    我现在要在页面上多加个东西进去。。还有我看strut, 本来不需要setPassword的,你submit后可以直接叫getPassword来得到密码的。
    所以我不知道怎么能加密好去set呢?根本不知道在哪set? 唉
      

  5.   

    看到头痛都没理解, 有一点,你验证码,用明文再加密到action 。为什么这么做。验证码可以用图片方式啊。而且即使这样,你在 actionForm 添加个字段不也比这来得直接。
      

  6.   

    看来我表达有问题
    进一步声明下 呵呵
    我的验证码其实是动态密码。。一定要加密送过去的。。
    还有ActionForm是不能修改的。因为我没有他们的源码。。
    所以一定要把动态密码跟密码绑定一块的可能我问题问太多了 好吧我减少到一个。。怎么把动态密码+密码送过去
    before的code: 
    <fmt:message key="password" /> 
    <html:password styleId="password" tabindex="2" property="password" size="50" styleClass="textField_std" errorStyleClass="textField_error" /> 
    然后在loginAction 那可以直接getPassword()就得到密码了。现在我想做成:<fmt:message key="password" /> 
    <html:password styleId="password" tabindex="2" property="password" size="50" styleClass="textField_std" errorStyleClass="textField_error" /> 
    然后再加一个 动态密码的:用相同的property。
    <fmt:message key="DynamicPassword" /> 
    <html:password styleId="DynamicPassword" tabindex="2" property="password" size="50" styleClass="textField_std" errorStyleClass="textField_error" /> 接下来的不知道了。。怎么把密码+动态密码一块送过去。。?