• ベストアンサー

<html:form・・・>,<input type・・・>について

<html:form・・・> <input type・・・> </html:form> 上記のようにしても正常に動くのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

何を持って「正常に」と言うかね。 動くか動かないかの確認なら試してみるのが何よりも早いわ。 やってみれば? ところで質問はStrutsのことかしら? Strutsのことでの質問なら 動くわよ という回答になるけど。 Strutsが<html:~を推奨しているのは記述の統一ができるから というのが大きな理由 そして将来何か組み込むことができるから と言う理由もあるわ。 使ったほうがいろいろ助かるのは間違いないわよ。 むしろ使わないならその使わない理由を明確にしておいたほうがいいわ。 将来そのコードを見た人のためにね。

TKO_1988
質問者

補足

ご回答ありがとうございます。 <input type・・・>にした理由なのですが、はじめに <html:password redisplay="false"/>の中にvalue="<bean:write name="login" property= "member_password"/>"を入れようとしてエラーが解決できなかったからです。 今は以下のようにしていてもちゃんと表示されるのですが、新たな問題が浮上したため、ご質問させていただいた内容が関係しているのではないかと思い、投稿した次第です。 <html:form action="***" > <input type="password" size="50" value="<bean:write name="login" property= "member_password"/>" redisplay="false"/> ・・・ <html:submit value="更新する" /> </html:form> 私は今、上記のソースコードのJSPからActionForm,struts-config.xmlを使い、サーブレットで以下のソースコードのように,パスワードを暗号化しようとしているのですが、java.lang.nullpointerexceptionが出てきてしまいます。パスワードのオブジェクトがnullになっていると思うのですが・・・。スペルの間違いなどはないし、試しに <input type="text" property= "member_password"/>に変更してみたのですが, 結果は同じでした。かなり初心者の質問ですが、考えられる間違いがあればご教授お願いできませんでしょうか? public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception { ActionForm dForm = (ActionForm)form; String encryptionPassword = encryptionPassword(dForm.getMember_password()); //別のサーブレットでDBへ格納するためのソースです Logic logic = new Logic(getDataSource(request)); logic.upMember(encryptionPassword); return mapping.findForward("success"); } private String encryptionPassword(String member_password) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("MD5"); //以下のソースでjava.lang.nullpointerexceptionが出てきます。 byte[] enc = md.digest(member_password.getBytes()); return byteArraytoHexString(enc); } private static String byteArraytoHexString(byte[] md5) { StringBuffer md5String = new StringBuffer(); for (int i = 0; i < md5.length; i++) { int n = md5[i] & 0xff; if (n < 16){ md5String.append("0"); } md5String.append(Integer.toHexString(n).toUpperCase()); } return md5String.toString(); }

その他の回答 (2)

  • ykkuy
  • ベストアンサー率0% (0/2)
回答No.3

No.2で回答したものです。 新たに出ているエラーが、どの部分で出ているのかがわからないのでなんとも言えませんが、 SQLにプレースホルダを使っていて、そのプレースホルダの数と、 SQL実行時にプレースホルダにバインドしている値の個数が違っていたりしませんか?

  • ykkuy
  • ベストアンサー率0% (0/2)
回答No.2

他の方への補足拝見しました。 inputタグで書くならname属性を指定しないといけないのでは?

TKO_1988
質問者

補足

ご回答ありがとうございます。 name="member_password" 上記のようにname属性を指定したのですが、「Parameter index out of bounds. 2 is not between valid values of 1 and 1」というエラーが出てきてしまいました。ネットで調べても、翻訳しても、答えが導き出せないで困っています。このエラーはどのようなことを訴えているのでしょうか?

関連するQ&A