Java Strutsにおけるゲッターメソッドのエラー

このQ&Aのポイント
  • Java StrutsおよびWindowsXPを使用してログイン画面を作成していますが、Bean LoginFrmのプロパティidに対するゲッターメソッドが存在しないというエラーが発生しています。参考サイトを探しても解決策が見つからず、StrutsやJavaの初心者であるため応用が利かないようです。
  • 問題の原因はloginTop.jsp、login.jsp、LoginFrm.java、LoginAct.java、struts-config.xmlのいずれかにあると考えられますが、具体的な箇所は特定できません。
  • loginTop.jspではログインIDとパスワードの入力フォームがあります。
回答を見る
  • ベストアンサー

Java Struts ~に対するゲッターメソッドがありません

Java Struts WindowsXp Java Struts共に初心者です。 上記を使用してログイン画面を作成しています。 エラーが発生しているのですが 「Bean LoginFrm のプロパティ id に対するゲッターメソッドがありません」 と言われます。 参考サイトはいくつもあるのですが、そもそもイテレータを使用していないとか私の状況に一致する回答を見つけることができませんでした。 (JAVA、Struts共に慣れていないためか応用がきかないみたいです) loginTop.jsp login.jsp LoginFrm.java LoginAct.java struts-config.xml のいずれかが原因だとは思うのですが、そのどこかが皆目見当もつきません。 loginTop.jsp----------------------------- <html:form action="/login"> <table border="0"> <tr><td> ログインID<html:text name="LoginFrm" property="id" size="6" maxlength="5" /> </td></tr> <tr><td> パスワード<html:password name="LoginFrm" property="pass" size="6" maxlength="5" /> </td></tr> </table> </html:form> login.jsp---------------------- <html:form action="/login"> <table border="0"> <tr><td> A:<bean:write name="LoginFrm" property="id" /> </td></tr> <tr><td> B:<bean:write name="LoginFrm" property="pass" /> </td></tr> </table> </html:form> LoginFrm.java---------------------- private String id; private String pass; public String getID() { return id; } public void setID(String id) { this.id = id; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } LoginAct.java-------------------- throws Exception { request.setCharacterEncoding("Windows-31J"); LoginFrm logFrm = (LoginFrm) form; log.info(" user = "+logFrm.getID()); log.info(" user = "+logFrm.getPass()); return mapping.findForward("login"); } struts-config.xml--------------------------- <form-beans> <form-bean name="LoginFrm" type="loginForm.LoginFrm" /> </form-beans> ~ <action attribute="LoginFrm" input="/pages/loginTop.jsp" name="LoginFrm" path="/login" type="loginAction.LoginAct" scope="request" validate="true"> <forward name="login" path="/pages/login.jsp" /> </action> 以上です。 かなり長くなり申し訳ありません。

  • Java
  • 回答数1
  • ありがとう数5

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

  • ベストアンサー
回答No.1

>public String getID() { public String getId() { >public void setID(String id) { public void setId(String id) { うーん、ここでしょうかねぇ・・・

ShimantoGa
質問者

お礼

本当に有難うございます!! get setのgetid setid getpass setpass に修正したところ無事動作しました。 結局一晩悩んで解決出来なかったもので助かりました。 まさかメソッド名も関係するとは・・

ShimantoGa
質問者

補足

補足と言いますかお礼の追加です。 こんな長ったらしいソースをお時間割いて解析して下さり、誠に有難うございました。

関連するQ&A

  • java strutsでの一覧表の表示方法について

    以下の内容でロジックを組んだのですが、 jspより表示される一覧表は、003 name3が3件表示されてしまいます。 一覧表を正しく表示できない原因を教えてください。 SP0010_FORM_Bean.java public class SP0010_FORM_Bean { protected String id; protected String name; public void setId(String s) { id = s; } public String getId() { return id; } public void setName(String s) { name = s; } public String getName() { return name; } } SP0010_FORM.java public class SP0010_FORM extends ValidatorForm{ protected List<SP0010_FORM_Bean> loopList; public void setLoopList(List<SP0010_FORM_Bean> list) { loopList = list; } public List<SP0010_FORM_Bean> getLoopList() { return loopList; } } SP0010_ACTION_10.java SP0010_FORM initBean = new SP0010_FORM(); request.setAttribute("list_form", initBean); List<SP0010_FORM_Bean> list = new ArrayList<SP0010_FORM_Bean>(); SP0010_FORM_Bean bean1 = new SP0010_FORM_Bean(); bean1.setId("001"); bean1.setName("name1"); list.add(bean1); bean1.setId("002"); bean1.setName("name2"); list.add(bean1); bean1.setId("003"); bean1.setName("name3"); list.add(bean1); initBean.setLoopList(list); jsp <table border="1"> <logic:iterate id="loop" name="list_form" property="loopList"> <tr> <td><bean:write name="loop" property="id" /></td> <td><bean:write name="loop" property="name" /></td> </tr> </logic:iterate> </table>

    • ベストアンサー
    • Java
  • Java Struts MVCモデル 正しい書き方

    Java Struts1.3.10 皆でとあるシステムを作ることになったのですが、 JSP・ActionForm・Actionそれぞれの関係の在り方について悩んでいます。 ログイン機能を例とします。 1機能、1Form、1Actionとした場合は: 1.Login.jspでIDとPASSを入力。 2.LoginResultForm.javaにIDとPASSを格納。 3.LoginResultAction.javaでDBチェック(IDとPASSの存在・権限) 4.Result.jspへ遷移。ID・PASS・権限を表示する 使用するファイルは4つとなります。 1JSP、1Form1、Actionとした場合は: 1.Login.jspでIDとPASSを入力。 2.LoginForm.javaにIDとPASSを格納。 3.LoginAction.javaでDBチェック(IDとPASSの存在) 4.ResultForm.javaにIDとPASSを渡す(Sessionなど) 5.ResultAction.javaでDBから権限を取得、ResultFormに格納 6.Result.jspへ遷移。ID・PASS・権限を表示する 使用するファイルは6つとなります。 現在意見が三つありまして、 1.違うForm同士にデータのやり取りが発生するようであれば(1機能とし)、同じフォームにするべきではないのか? 2.Fromのメンバの数が少ないうちは良いが、今後数が増えると可読性が悪くなるから分けるべきではないのか? 3.フォームは同じでないとまずいが、ActionはJSPごとに分けるべき というものです。 1.ではログイン者情報をセッションに保持することは許可しています。(一部例外を認めている) これらはいずれもStrutsフレームワークの範疇から逸脱している、あるいはMVCモデルに反している、そもそも非効率的ということはないのでしょうか? つまりあくまで実装の仕方の問題でしかない、という結論でよろしいでしょうか?

    • ベストアンサー
    • Java
  • strutsのhtml:linkの使い方

    html:linkを使用してJSPを表示した際に、前のフォームのプロパティ値(ここではstaffNumberの値)を取得したいのですが,うまくいきません。 同じ処理をhtml:submitで実行すると取得できています。 その違いを教えて頂きたいのです。 以下がそのコードです。 【struts-config】 <form-bean dynamic="true" name= "loginForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name = "staffNumber" type= "java.lang.String" /> </form-bean> <action name="loginForm" path="/login" scope="request" type="login.action.LoginAction" validate="false"> <forward name="success" path="/login.jsp" /> </action> 【login.jsp】 <html:form action="/login">  <html:text property="staffNumber" size="10"maxlength="8"/> <html:link action="/login">testlink</html:link> <html:submit value="test"/> </html:form> 【LoginAction】 public class LoginAction extends Action{ public ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception{ DynaValidatorForm loginForm =(DynaValidatorForm) form; String staffNumber=(String)loginForm.get("staffNumber"); System.out.println(staffNumber); return (mapping.findForward("success")); } } linkの処理で同じJSPを表示していますが,前のプロパティ値を取得しているかをログで確認する事を優先しているのでそのようにしています。 質問の意味がわからない、ソースの不足等ありましたら御指摘下さい。 宜しくお願いします。

    • ベストアンサー
    • Java
  • struts-config.xmlの設定

    お世話になります。 strutsを使用しlogin画面を作成し、エラーならエラーメッセージを表示させ、成功なら次のページに遷移するようにしたいのですが、 その際のstruts-config.xmlの設定がわかりません。 login画面を以下のように設定(login.jsp) <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <html:html> <head> <title>ログイン画面</title> </head> <body> <html:errors/> <html:form action="/login" method="post"> ユーザID : <html:text property="id"/><br> パスワード: <html:password property="password"/><br> <html:submit value="ログイン"/> </html:form> </body> </html:html> </html> struts-config.xml <form-beans> <!-- sample form bean descriptor for an ActionForm <form-bean name="LoginForm"   //jspのform actionで渡すデータ type="org.apache.struts.validator.DynaValidatorForm"/> end sample --> <!-- sample form bean descriptor for a DynaActionForm <form-property     name="userid" //jsp画面のproperty指定時に渡す type="java.lang.String"/> <form-property name="password" //passwordのとき type="java.lang.String"/> </form-bean> end sample --> </form-beans>      //actionで渡すデータの定義1 <action path="/Login"   //actionで渡すデータ type="org.apache.struts.actions.LoginAction" parameter="/pages/Input.jsp"/> //actionで渡すデータの定義2 <action path="/InputSubmit" type="app.InputAction" name="inputForm" scope="request" validate="true" input="/pages/Input.jsp"/> //actionで渡す定義3 <action path="/edit*" type="app.Edit{1}Action" name="inputForm" scope="request" validate="true" input="/pages/Edit{1}.jsp"/> end samples --> </action-mappings> の箇所を変更するのはわかるのですが、どう変更したらいいかがわかりません。 ログイン成功時画面(loginSuccess.jsp) <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <%@ taglib uri="/tags/struts-html" prefix="html" %> LoginSuccess!! <html:form action="/nextpage" method="post"> <html:submit value="次のページ"/> </html:form> </html> と設定してます。 javaクラスの設定も関係あるのですが、今回は省略してます 。今回したいのはlogin.jsp画面を表示させたいのですが、 その際以下のエラーがでます。 org.apache.jasper.JasperException: An exception occurred processing JSP page /pages/login.jsp at line 19 16: </head> 17: <body> 18: <html:errors/> 19: <html:form action="/login" method="post"> 20: ユーザID : <html:text property="id"/><br> 21: パスワード: <html:password property="password"/><br> 22: <html:submit value="ログイン"/> よろしくお願いします。

  • strutsでlist型の入力を行うには

    strutsでlist型の入力を行いたいのですが、サーバー側で上手く取得できません。 実際には struts-configに <form-bean name="TestForm" type="base.BaseActionForm"> <form-property name="testList" type="java.util.List" /> </form-bean> JSPには <logic:iterate id="testList" type="bean.TestBean" name="TestForm" property="testList" indexId="idx"> <tr> <td> <html:text property="strKamoku" name="testList"/> </td> </tr> </logic:iterate> beanは下記のようです。 public class TestBean implements Serializable, Cloneable { private String strKamoku; public String getStrKamoku() { return strKamoku; } public void setStrKamoku(String strKamoku) { this.strKamoku = strKamoku; } } 上記のように設定し、サーバー上でセットした値をテキストボックスに 入れてlist表示できたのですが、テキストボックスに入れた値を変更し、submitし、サーバー上でlistの中を見てみると、表示した時のままで変更した値が反映されてません。 表示したlistの値を変更する事はできるのでしょうか。 わかりづらい説明ですいませんが、なにかアドバイス宜しくお願いします。

    • ベストアンサー
    • Java
  • html:linkでリンククリック時に画面入力値を取得してアクションへ渡す方法

    Strutsを使用したログイン画面を作成しています。ID・パスワードを入力して、html:linkをクリックしてログインするという処理を行いたいです。 そこで、リンクをクリックした際にJSPに記述しているhtml:textとhtml:passwordの値を取得して、Actionへ渡し、その情報を元にDBへの問い合わせを行いたいのですが、html:linkで複数パラメータを渡す方法が分からないので教えていただきたいです。 過去質も参考にしてみましたが、今回の質問に的を得た内容がなかったので質問させていただきました。 参考にした方法 (1)JavaScriptのonclickイベントでサブミットさせる ⇒例えばdocument.form.submit();と書けそうだが,html:formにはname属性がないため、formの指定ができない?! (2)Mapを利用してパラメータを渡す ⇒JSP内にMap設定のロジックを書く。Map(name,value)の形式で、value部分(画面入力値)はどうやって取得するのか分からない。 【struts-config】 <action-mappings> <action path="/login_Anken" type="action.Login_Anken_Action" name="login_Anken_Form" validate="true" input="/pages/Login_Anken.jsp" scope="request"> <forward name="success" path="/pages/MainMenu.jsp"/> <forward name="fail" path="/pages/Login_Anken.jsp"/> </action> 【Login_Anken.jsp】 <html:form action="/login_Anken" > <table border="0" width="100%" > <tr> <td class="pname" colspan="4" > ****システム </td> </tr> <tr> <td colspan="4"> <hr size="5" width="100%" noshade> </td> </tr> <tr> <td class="gname" colspan="4" > ログイン </td> </tr> <tr> <td colspan="4" > <hr size="5" width="100%" noshade> </td> </tr> <tr> <td width="25%" >&nbsp; </td> <td class="login"> ユーザID </td> <td width="20%""> <html:text property="userId"/> </td> <td width="20%">&nbsp; </td> </tr> <tr> <td width="25%" >&nbsp; </td> <td class="login"> パスワード </td> <td width="20%""> <html:password property="password" /> </td> <td width="20%">&nbsp; </td> </tr> <tr> <td width="10%" align="center" colspan="4" > <html:link action="/login_Anken" name="map">ログイン </html:link> </td> </tr> </table> </html:form> 【Login_Anken_Action.java】 public class Login_Anken_Action extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionMessages errors = new ActionMessages(); //画面入力値を取得 Login_Anken_Form loginAnkenForm = (Login_Anken_Form) form; boolean isSuccess = false; Login_Anken_Business business = new Login_Anken_Business(); String userName = null; userName = business.getLoginUserName (loginAnkenForm.getUserId(), loginAnkenForm.getPassword()); //ユーザが存在すればログインOK isSuccess = (userName != null); if (isSuccess) { //TODO HttpSession session = request.getSession(); session.setAttribute("name", userName); return mapping.findForward("success"); } else { errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.login")); saveErrors(request, errors); return mapping.findForward("fail"); } } }

    • ベストアンサー
    • Java
  • Struts 1 で、複数件のフィールドを更新する方法を教えてください。

    <head> <title>登録画面</title> </head> <body> <html:form action="/RegisterData"> ヘッダ:<html:text property="strHeader" /><br> <table border="0"> <logic:iterate id="objRecord" name="BIKO_FORM" property="objBikoList" indexId="intIndex"> <tr> <td>項目<%=(intIndex+1)%></td> <td><html:text name="objRecord" property="strBiko" indexed="true"/></td> </tr> </logic:iterate> <tr> <td colspan="2"><html:submit value="記録する" /></td> </tr> </table> </html:form> </body> このような JSP で、html:text に入力された値を再表示するプログラムを作ろうとしています。 表示は、 <head> <title>登録成功画面</title> </head> <body> <bean:write name="BIKO_FORM" property="strHeader" /> <table border="0"> <logic:iterate id="objRecord" name="BIKO_FORM" property="objBikoList" indexId="intIndex"> <tr> <td>項目<%=(intIndex+1)%>:<bean:write name="objRecord" property="strBiko" /></td> </tr> </logic:iterate> </table> </body> このような感じです。 ActionForm のプロパティは、 private String strHeader; private List<BikoFormDetail> objBikoList; です。 特にセッションに再登録したり、値を変更したりはしないのですが、うまく動作しないのです。iterater で表示した、html:text への画面からの入力値を参照することは、無理なのでしょうか?

    • ベストアンサー
    • Java
  • 教えてください:strutsのhtml:formタグがjspに展開された状態の、actionの値について

    java初心者です。 どなたか教えていただけませんでしょうか? JAVAのstrutsを使用してソフトを作成しています。 JSPに記載した「<html:form action="/authentication" focus="id"> 」 との記述が、WEB(IE)に展開されたソースを見ると、「<form name="AuthenticationForm" method="post" action="/strutsTest/authentication">」 に変換されています。 action="/authentication"と記述しているにもかかわらず、 action="/strutsTest/authentication"と展開されているのですが /strutsTestが自動的に付与されているのは、なぜなのでしょうか? なにか設定するところがあるのでしょうか? ※struts-config.xmlに指定したpathと一致しない為、404NotFoundになるので自動設定しないように変更したいのです。 ちなみに環境は struts-1.3.10 Apache Tomcat 6.0.14 Server EclipsVersion: 3.4.2 pakage名:struts プロジェクト名:strutsTest struts-config.xmlの設定   <form-beans> <form-bean name="AuthenticationForm" type="struts.AuthenticationForm"/> </form-beans> <global-exceptions> </global-exceptions> <global-forwards> <forward name="fail" path="/login.jsp"/> </global-forwards> <action-mappings> <action path="/authentication" name="AuthenticationForm" type="struts.AuthenticationAction" scope="session"> <forward name="success" path="/welcome.jsp"/> <forward name="fail" path="/login.jsp"/> </action> </action-mappings> login.jsp <%@ page contentType="text/html; charset=Windows-31J" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <html:html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"/> <title>ログイン画面</title> </head> <body> <html:errors/> ID・パスワードを入力してください。 <html:form action="/authentication" focus="id"> <html:text property="id" size="16"/> <br> <html:password property="pas" size="16" redisplay="false" /> <br> <html:submit property="submit" value="送信"/> <html:reset value="リセット"/> </html:form> </body> </html:html> 動作順は、login.jsp => AuthenticationAction.class => welcome.jsp です。 よろしくお願いします。

  • strutsでコンパイラ

    strutsでコンパイラができません struts-confing <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="Update" type="action.form.Update"/> <form-bean name="kensaku2" type="action.form.kensaku2"/> </form-beans> <!-- アクションの定義 --> <action-mappings> <!-- Form情報をUpdateとして、action.AccountFormクラスをアクションとして指定する --> <!-- Form情報はリクエストスコープに格納される --> <action name="HelloWorldForm" type="action.AccountForm" path="/Update" scope="request" > <!-- アクションの遷移先として論理名をhello ファイルパスを/webJSP/index.jspとする --> <forward name="Update" path="/webJSP/index.jsp" /> </action> </action-mappings> <message-resources parameter="ApplicationResource" /> </struts-config> index.jsp <%@page contentType = "text/html; charset=Shift_JIS"%> <%@page import= "java.util.List,websample.Account"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <html:html> <head> <title>一覧画面</title> </head> <body> <!-- HTMLのFROMタグに変換される --> <html:form method="POST" action="tuika1" target="_blank "> <div><font size="6" ><strong>顧客一覧画面</strong></font></div> <input type="submit" value="追加" name="insert"> </html:form> <form method="POST" action="kousin11" target="_blank "> <input type="submit" value="更新" name="update"> </html:form> <script type="text/javascript"> <!-- function disp(){ // 「OK」時の処理開始 + 確認ダイアログの表示 if(window.confirm('削除しますか')){ location.href = "index.jsp"; // index.jsp へジャンプ } // 「OK」時の処理終了 // 「キャンセル」時の処理開始 else{ window.alert('キャンセルされました'); // 警告ダイアログを表示 } // 「キャンセル」時の処理終了 } // --> </script> <html:form method="POST" action="Update"> <input type="submit" value="削除" name="delete" onClick="disp()"></p> <table border="1"> <tr> <TH>コード <TH>名称 <TH>住所 <TH>電話 <TH>メール <% List list = (List)request.getAttribute("list"); for(int i=0; i<list.size(); i++){ Account account = (Account)list.get(i); %> <tr> <td><%=account.getid()%> <td><%=account.getname()%> <td><%=account.getaddress()%> <td><%=account.getdenwa()%> <td><%=account.getmail()%> <td><input type="radio" name="radio" value="<%=account.getid()%>" > <% } %> </table> </html:form> </body> </html:html>

  • ☆Struts ActionServletの内部動作について

    Struts勉強中のものです。教えて下さい♪ struts-config.xmlより抜粋... <form-bean name="loginForm" type="jp.co.struts.LoginForm"/> <!----> <action-mappings> <!--Add action --> <action path="/login" name="loginForm" type="jp.co.struts.LoginAction"> <forward name="success" path="/jsp/loginSuccess.jsp"/> <forward name="error" path="/jsp/loginError.jsp"/> </action> </action-mappings> 以下URL画面の中段の画像の説明であるのですが、 (http://www.itmedia.co.jp/enterprise/0310/06/epn03_4.html) ActionServletは、struts-config.xmlを参照して、ActionFormクラスを処理した後にActionクラスを実行する内容の記載がありますが、内部的にはまず、Actionクラスを判別してから、nameで紐付けてActionFormクラスを判別しているのでしょうか?? 上記のstruts-config.xmlを例に具体的に言いますと。 まず、login.doが実行された場合、 <form-bean name="loginForm" type="jp.co.struts.LoginForm"/> には、path="/login" の属性がないので、まず、 <action path="/login" name="loginForm" type="jp.co.struts.LoginAction">を読み込んで、name属性とひもづく、form-beanのtype(type="jp.co.struts.LoginForm")に設定されたクラスを処理しているのでしょうか?? なぜ form-bean にpath属性を作って、login.doが実行された際に適切なform-beanを判別するようになっていないのかが疑問です・・・・ わかりずらい説明で申し訳ないですが。ご教授下さい。 また、このへんの説明が詳しく書いている本、サイト教えて下さい。 頑張ってStrutsを深く理解していきたいです♪

専門家に質問してみよう