- PR -

キャスト・値の引渡しができません。

1
投稿者投稿内容
カイト
会議室デビュー日: 2004/07/12
投稿数: 11
投稿日時: 2004-07-12 11:58
-- 環境 --
Eclipse Platform Version: 2.1.1
Tomcat 4.1

-- index.jsp --
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title><bean:message key="screen.title"/></title>
</head>
<body bgcolor="#ffffff">
<center>
<h1 style="color:white;background-color:#525D76;">
<I><bean:message key="screen.select"/></I>
</h1><br>
<html:errors/>
<html:form action="/ModeSelect">
<!-- 登録ボタン -->
<html:submit property="modeSelectButton" tabindex="1">
<bean:message key="button.newreg"/>
</html:submit><br><br>
<!-- 修正ボタン -->
<html:submit property="modeSelectButton" tabindex="2">
<bean:message key="button.revise"/>
</html:submit><br><br>
<!-- 照会ボタン -->
<html:submit property="modeSelectButton" tabindex="3">
<bean:message key="button.inquir"/>
</html:submit><br><br>
<!-- 削除ボタン -->
<html:submit property="modeSelectButton" tabindex="4">
<bean:message key="button.elimin"/>
</html:submit><br><br>
</html:form>
</center>
</body>
</html:html>

-- ModeSelectForm.java --
public class ModeSelectForm extends ActionForm {
private String modeSelectButton = null;
public void setModeSelectButton(String modeSelectButton) {
this.modeSelectButton = modeSelectButton;
}
public String getModeSelectButton() {
return modeSelectButton;
}
}

-- ModeSelectAction.java --
public class ModeSelectAction extends LookupDispatchAction {
protected Map getKeyMethodMap() {
Map map = new HashMap();
map.put("button.newreg", "processNewreg");
map.put("button.revise", "processRevise");
map.put("button.inquir", "processInquir");
map.put("button.elimin", "processElimin");
return map;
}
public ActionForward processNewreg(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
DbRenewalForm dbRenewalForm = (DbRenewalForm)form;
dbRenewalForm.setModeName("新規登録画面");
dbRenewalForm.setModeNumber("1");
dbRenewalForm.setDiscNumber("");
dbRenewalForm.setDbRenewalButton("登録");
return mapping.findForward("DbRenewalMode");
}
public ActionForward processRevise(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
return mapping.findForward("DbRetrieveMode");
}
public ActionForward processInquir(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
return mapping.findForward("DbRetrieveMode");
}
public ActionForward processElimin(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
return mapping.findForward("DbRetrieveMode");
}
}

-- DbRenewal.jsp --
public class DbRenewalForm extends ActionForm {
private String modeName;
private String modeNumber;
private String discNumber;
private String name = null;
private String division = null;
private String frPeriod = null;
private String toPeriod = null;
private String destination = null;
private String purpose = null;
private String dbRenewalButton;
// 処理モード名
public String getModeName(){
return this.modeName;
}
public void setModeName(String modeName){
this.modeName = modeName;
}
// モードナンバー
public String getModeNumber(){
return this.modeNumber;
}
public void setModeNumber(String modeNumber){
this.modeNumber = modeNumber;
}
// 識別ナンバー
public String getDiscNumber(){
return this.discNumber;
}
public void setDiscNumber(String discNumber){
this.discNumber = discNumber;
}
// 名前
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
// 区分
public String getDivision(){
return this.division;
}
public void setDivision(String division){
this.division = division;
}
// 期間(FROM)
public String getFrPeriod(){
return this.frPeriod;
}
public void setFrPeriod(String frPeriod){
this.frPeriod = frPeriod;
}
// 期間(TO)
public String getToPeriod(){
return this.toPeriod;
}
public void setToPeriod(String toPeriod){
this.toPeriod = toPeriod;
}
// 行き先
public String getDestination(){
return this.destination;
}
public void setDestination(String destination){
this.destination = destination;
}
// 目的
public String getPurpose(){
return this.purpose;
}
public void setPurpose(String purpose){
this.purpose = purpose;
}
// 更新ボタン
public String getDbRenewalButton() {
return dbRenewalButton;
}
public void setDbRenewalButton(String dbRenewalButton) {
this.dbRenewalButton = dbRenewalButton;
}
}

-- --
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title><bean:message key="screen.title"/></title>
</head>
<body bgcolor = "#ffffff">
<center><html:errors/>
<html:form action="/DbRenewal">
<h1 style = "color:white;background-color:#525D76;>
<I><html:hidden property="modeName" write="true"/></I>
</h1><br>
<html:hidden property = "modeNumber"/>
<html:hidden property = "discNumber"/>
<table border = "0" cellspacing = "5" cellpadding = "3" width = "696">
<tr>
<th bgcolor = "#9eebfe" width = "90"><center>名  前</center></th>
<td><html:text property="name" size="20" tabindex="1" maxlength="20"/></td>
</tr><tr>
<th bgcolor = "#9eebfe" width = "90"><center>区  分</center></th>
<td>
<table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%">
<tr>
<td width="25%"><html:radio property="division" value="yukyu" />有休</td>
<td width="25%"><html:radio property="division" value="daikyu" />代休</td>
<td width="25%"><html:radio property="division" value="kekkin" />欠勤</td>
<td width="25%"><html:radio property="division" value="tikoku" />遅刻</td>
</tr><tr>
<td width="25%"><html:radio property="division" value="soutai" />早退</td>
<td width="25%"><html:radio property="division" value="sihuto" />シフト</td>
<td width="25%"><html:radio property="division" value="syuttyo" />出張・外出</td>
<td width="25%"><html:radio property="division" value="sonota" />その他</td>
</tr>
</table>
</td>
</tr><tr>
<th bgcolor = "#9eebfe" width = "90"><center>期  間</center></th>
<td><html:text property="frPeriod" size="20" tabindex="3" maxlength="20"/> 〜 <html:text property="toPeriod" size="20" tabindex="4" maxlength="20"/></td>
</tr><tr>
<th bgcolor = "#9eebfe" width = "90"><center>行 き 先</center></th>
<td><html:text property="destination" size="80" tabindex="5" maxlength="80"/></td>
</tr><tr>
<th bgcolor = "#9eebfe" width = "90"><center>目   的<br>(理由)</center></th>
<td><html:textarea property="purpose" cols="80"rows="5"/></td>
</tr>
</table><br><br>
<html:submit property="dbRenewalButton" tabindex = "99"></html:submit>
</html:form>
</center>
</body>
</html:html>

-- --
<form-beans>
<form-bean name="modeSelectForm" type="dba.struts.form.ModeSelectForm">
<form-property name="modeSelectButton" type="java.lang.String"/>
</form-bean>
<form-bean name="dbRenewalForm" type="dba.struts.form.DbRenewalForm">
<form-property name="modeName" type="java.lang.String"/>
<form-property name="modeNumber" type="java.lang.String"/>
<form-property name="discNumber" type="java.lang.String"/>
<form-property name="dbRenewalButton" type="java.lang.String"/>
</form-bean>
</form-beans>
<action-mappings>
<action path="/ModeSelect"
attribute="modeSelectForm" name="modeSelectForm"
input="/index.jsp" scope="request"
type="dba.struts.action.ModeSelectAction" parameter="modeSelectButton">
<forward name="DbRenewalMode" path="/pages/DbRenewal.jsp"/>
<forward name="DbRetrieveMode" path="/pages/DbRetrieve.jsp"/>
</action>
<action path="/DbRenewal"
name="dbRenewalForm"
input="/pages/DbRenewal.jsp" scope="request"
type="dba.struts.action.DbRenewalAction">
<forward name="success" path="/index.jsp"/>
</action>

-- エラーメッセージ --
javax.servlet.ServletException
 at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
 at com.ibm.jp.swg.stx.action.WsxRequestProcessor.processActionPerform(WsxRequestProcessor.java:132)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
 at net.skirnir.catalina.servlets.MultipartFilter.doFilter(MultipartFilter.java:69)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
 at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
 at java.lang.Thread.run(Thread.java:536)

java.lang.ClassCastException
at dba.struts.action.ModeSelectAction.processNewreg(ModeSelectAction.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:252)
at com.ibm.jp.swg.stx.action.WsxRequestFilter.executeAction(WsxRequestFilter.java:223)
at com.ibm.jp.swg.stx.requestfilter.WsxPrePostFilter.doFilter(WsxPrePostFilter.java:129)
at com.ibm.jp.swg.stx.action.WsxRequestFilter.executeAction(WsxRequestFilter.java:218)
at com.ibm.jp.swg.stx.requestfilter.WsxScreenOrderControlFilter.doFilter(WsxScreenOrderControlFilter.java:205)
at com.ibm.jp.swg.stx.action.WsxRequestFilter.executeAction(WsxRequestFilter.java:218)
at com.ibm.jp.swg.stx.requestfilter.WsxServiceCheckFilter.doFilter(WsxServiceCheckFilter.java:261)
at com.ibm.jp.swg.stx.action.WsxRequestFilter.executeAction(WsxRequestFilter.java:218)
at com.ibm.jp.swg.stx.requestfilter.WsxSyncFilter.doFilter(WsxSyncFilter.java:125)
at com.ibm.jp.swg.stx.action.WsxRequestProcessor.processActionPerform(WsxRequestProcessor.java:121)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at net.skirnir.catalina.servlets.MultipartFilter.doFilter(MultipartFilter.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)

というエラーが出て困っています。ModeSelectForm.javaの「DbRenewalForm dbRenewalForm = (DbRenewalForm)form;」ところでキャストがうまくできていないのだと思いますが解決法が思いつきません。
どうしたら解決できるでしょうか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-07-12 13:10
struts-config.xmlのformの設定が
DbRenewalFormを参照するようになっていないんじゃないですか?
最近Strutsをやってないので、細かい設定は忘れましたが。
カイト
会議室デビュー日: 2004/07/12
投稿数: 11
投稿日時: 2004-07-12 13:26
かつのりさん、ありがとうございました。
かつのりさんの御指摘通り、struts-config.xmlのForm Beanの設定を変えたところ上手く動きました。
1

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