- PR -

定義しているはずなのに、propertyが無い!?

1
投稿者投稿内容
桜月
常連さん
会議室デビュー日: 2004/10/01
投稿数: 27
お住まい・勤務地: 神奈川県
投稿日時: 2005-02-10 13:58
お世話になります、桜月です。

javax.servlet.jsp.JspException: No getter method for property name of bean org.apache.struts.taglib.html.BEAN

というエラーが出てしまい、ActionFormに項目名がないということは、
わかるのですがActionFormにはきちんと定義しているはずなのに何故かこのエラーが
消えてくれません。

どなたかご教授いただけませんでしょうか?

ソースは下記の通りです。

**************************************************************************

【Name.jsp】
<%@ page contentType="text/html; charset=MS932" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<%@ page import="naming.*" %>   // ActionFormを定義しているパッケージ名

<%
nameRegistForm nameRegistForm = (nameRegistForm)session.getAttribute("nameRegistForm");
%>

<BODY onLoad="doOnLoad()">
<html:form action = "/nameRegistInitial" onsubmit="return false;">
<html:hidden property="status" value=""/>

<html:text property="name1" styleClass="CONTform" style="ime-mode:active" size="50" maxlength="20"/>

</html:form>
</BODY>
</html:html>

【nameRegistForm.java】

package naming;

import org.apache.struts.validator.ValidatorForm;

public class nameRegistForm extends ValidatorForm {

private String name1 = ""; // 名前
private String status = "";     // 初期表示かどうか?

public String getStatus() {
return status;
}

public void setStatus(String string) {
status = string;
}

public String getName1() {
return name1;
}

public void setName1(String string) {
name1 = string;
}

}

【nameRegistInitialAction.java】

package naming;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class nameRegistInitialAction extends Action {

public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {

HttpSession session = request.getSession();

// 引数formのキャスト
nameRegistForm nameRegistForm = (nameRegistForm)form;

session.setAttribute("nameRegistForm",nameRegistForm);

return mapping.findForward("true");
}

}

【struts-config.xml】

(略)
<form-beans>
<form-bean name="nameRegistForm" type="naming.nameRegistForm" />
</form-beans>

<action-mappings>
<action
attribute="nameRegistForm"
name="nameRegistForm"
path="/nameRegistInitial"
type="naming.nameRegistInitialAction"
scope="session"
validate="false">
<forward name="true" path="/pages/name.jsp" />
</action>
</action-mappings>

****************************************************************

以上です。ちなみに<html:text property="name1" styleClass="CONTform" style="ime-mode:active" の部分のpropertyをstatusにすると何故か上手くいきます。

どうぞよろしくお願いします。

[ メッセージ編集済み 編集者: 桜月 編集日時 2005-02-10 14:59 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-02-10 17:13
パッと見だけの憶測ですが、プロパティ名で動作したりしなかったりということはプロパティ名に問題があるように見えますね。
既に切りわけ済みかもしれませんが、プロパティ名が数字で終わっていると正しくパースできないとか???

[ メッセージ編集済み 編集者: インギ 編集日時 2005-02-10 17:14 ]
桜月
常連さん
会議室デビュー日: 2004/10/01
投稿数: 27
お住まい・勤務地: 神奈川県
投稿日時: 2005-02-10 18:10
インギさん、アドバイスありがとうございます。

引用:

インギさんの書き込み (2005-02-10 17:13) より:
パッと見だけの憶測ですが、プロパティ名で動作したりしなかったりということはプロパティ名に問題があるように見えますね。
既に切りわけ済みかもしれませんが、プロパティ名が数字で終わっていると正しくパースできないとか???



念のため"name1"を"name"に変えてみたのですが、
やっぱりだめで下記のエラーが表示されてしまいます。

2005-02-10 18:01:26 StandardWrapperValve[action]: サーブレット action のServlet.service()が例外を投げました
javax.servlet.jsp.JspException: No getter method for property name of bean org.apache.struts.taglib.html.BEAN

プロパティ名が悪いのかとも思いましたが、もしかしたらActionForm自体が悪いのかも
知れません・・・今だに原因不明です。

あ、あと<input type="text" class="CONTform" style="ime-mode:inactive" property="name" size="4" maxlength="3">では何故か上手くtextBoxが表示
されるんです。

[ メッセージ編集済み 編集者: 桜月 編集日時 2005-02-10 18:13 ]
桜月
常連さん
会議室デビュー日: 2004/10/01
投稿数: 27
お住まい・勤務地: 神奈川県
投稿日時: 2005-02-10 22:00
自己レスです。

原因がわかりました。
ActionFormでgetとsetを自動生成せずに、手動で打ち込みgetNameFrist(書き直し
を重ねた結果)など先頭文字以外を大文字で書いてしまったのが原因みたいです。

単純なケアレスミスでした・・・
1

スキルアップ/キャリアアップ(JOB@IT)