- PR -

struts logic:iterate 条件により入力不可にしたい

投稿者投稿内容
ちゃちゃ
会議室デビュー日: 2004/07/09
投稿数: 7
投稿日時: 2004-07-28 20:07
こんにちは。

logic:iterateを使用しテーブル行を固定で作成しております。(必ず10行とか)
で表示データが5行しか無い場合、以降の5行のテキストをdisableにしたいのですが、出来ません。

試しに、
<logic:iterate id="recipe" name="HelloForm" property="recipe" indexId="index">
<tr>
<%
String disable = "disabled = 'true'";
%>
<td><html:text name="recipe" property="text1" indexed="true" <%= disable %>/></td>
</tr>

とすると、500エラーです。

直接

<html:text name="recipe" property="text1" indexed="true" disabled = 'true'>
と書くと正常です。

また、
<tr>
<%
String disable = "disabled = 'true'";
%>

<td><input type="text" name="text1" value="b" <%= disable %>></td>
</tr>
</table>

と書いても正常です。


<logic:iterate id="recipe" name="HelloForm" property="recipe" indexId="index">
<tr>
<%
String disable = "disabled = 'true'";
%>
<td><html:text name="recipe" property="text1" indexed="true" <%= disable %>/></td>
</tr>

というのは何が悪いのでしょう?それとも出来ないのでしょうか?

どうかよろしくご教授願います。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-07-28 21:29
「500エラー」とのことですので、何かサーバ側で起きているはずです。ログや標準(エラー)出力を確認してはいかがでしょうか?
NullPointerException とか ArrayIndexOutOfBoundsException とか出ていませんか?
ちゃちゃ
会議室デビュー日: 2004/07/09
投稿数: 7
投稿日時: 2004-07-28 22:23
お返事ありがとうございます。
JSP側の例外ではなさげです・・・

たぶん、JSPのstrutsタグをJAVAに落とす時に、変な変換されてるんじゃないかと思うのですが・・
書き方が悪いのですよね・・・
タグが閉じられてないって例外っぽいですし・・JSPもstrutsも今月からやり始めて試行錯誤です。
お気付きの点があれば宜しくお願い致します。

例外は以下です。

org.apache.jasper.JasperException: /Hello.jsp(36,4) jsp.error.unterminated.tag
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:94)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:428)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:126)
at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:729)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:804)
at org.apache.jasper.compiler.Parser.parseBody(Parser.java:833)
at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:753)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:804)
at org.apache.jasper.compiler.Parser.parseBody(Parser.java:833)
at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:753)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:804)
at org.apache.jasper.compiler.Parser.parseBody(Parser.java:833)
at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:753)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:804)
at org.apache.jasper.compiler.Parser.parse(Parser.java:122)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:199)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:153)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:227)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:369)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
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 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:2422)
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:163)
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:199)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-07-28 22:34
Jasper には明るくないのですが、34行目でタグの不一致(閉じられていない?)が発生しているのではないでしょうか?
タグの閉じ具合に注意してみましょう。
<html:text name="recipe" property="text1" indexed="true" disabled = 'true'>
は閉じていなくて、
<html:text name="recipe" property="text1" indexed="true" <%= disable %>/>
は閉じているように見えますが。
ちゃちゃ
会議室デビュー日: 2004/07/09
投稿数: 7
投稿日時: 2004-07-28 22:51
すいません。誤記でした。
それでは500エラーですね。

本当は
<html:text name="recipe" property="text1" indexed="true" disabled = 'true'/>でしたごめんなさいませ。これはうまく行くんですよね。直書きだと・・
プリンス
ベテラン
会議室デビュー日: 2003/07/05
投稿数: 78
お住まい・勤務地: 神奈川
投稿日時: 2004-07-29 00:34
<% String disable = "true";%>
<html:text name="recipe" property="text1" indexed="true" disabled="<%= disable %>" />

ではだめでしょうか?
ちゃちゃ
会議室デビュー日: 2004/07/09
投稿数: 7
投稿日時: 2004-07-29 23:58
プリンスさんこんばんは。
<table>
<logic:iterate id="recipe" name="HelloForm" property="recipe" indexId="index">
<tr>
<% String disable = "true";%>
<html:text name="recipe" property="text1" indexed="true" disabled="<%= disable %>" />
</tr>
</logic:iterate>
</tr>
</table>

と書くと

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

JSPファイル: /Hello.jsp の中の行: 22でエラーが発生しました

生成されたサーブレットのエラーです:
[javac] Compiling 1 source file

D:\struts-test01\work\org\apache\jsp\Hello_jsp.java:137: org.apache.struts.taglib.html.BaseHandlerTag の setDisabled(boolean) は (java.lang.String) に適用できません。
_jspx_th_html_text_1.setDisabled( disable );
^
エラー 1 個


at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)

となってしまいます。なりません?
tak3
ベテラン
会議室デビュー日: 2004/04/15
投稿数: 80
お住まい・勤務地: 菜の花・銀杏
投稿日時: 2004-07-30 09:43
未検証&思いつきですが。

>org.apache.struts.taglib.html.BaseHandlerTag の setDisabled(boolean) は
>(java.lang.String) に適用できません。
このログを見ると

<% boolean disable = true;%>
<html:text name="recipe" property="text1" indexed="true" disabled="<%= disable %>" />

にしたら、動くような気がしません?

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