- PR -

JSPのコンパイルが上手くいきません。

投稿者投稿内容
TON180
会議室デビュー日: 2005/05/19
投稿数: 14
お住まい・勤務地: 渋谷勤務
投稿日時: 2006-07-10 18:01
@追記@

このjspでは情報をデータベースから取得して10件づつ表示させるというものです。
【前へ】、【次へ】というアンカーも備えています。
すなわちページング情報も持ってます。

Action1つとForm2つがあります。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-07-10 18:20
listそのもの、もしくはlistの中身がnullになっていたりはしませんか?
TON180
会議室デビュー日: 2005/05/19
投稿数: 14
お住まい・勤務地: 渋谷勤務
投稿日時: 2006-07-10 19:02
nullでした。

nullでもcollectionエラーになる可能性ってあるんでしょうか?

ちなみにActionでのSQL分ではデータは取れてます。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-07-10 20:38
引用:

nullでした。

nullでもcollectionエラーになる可能性ってあるんでしょうか?


nullだからcollectionエラーになっているのでは?と指摘されているわけですよね。
検証もそんなに難しくないので、nullじゃなければ問題ないのか、
自分で検証されてみてはいかがでしょうか。
(Strutsのソースも公開されていますし、見ればわかると思いますが)

コード:
public class AAAIndexForm extends ActionForm { 

public static final String NULL_STRING = ""; 
private LinkedList list; 

public void setList( LinkedList list ) { this.list = list; } 
public LinkedList getList() { return list; } 

public static void main(String[] args) { 
AAAIndexForm aaaIndexForm = new AAAIndexForm(); 
} 
}



コード:
public LinkedList getList() { return list; } 


の部分を、
コード:
public LinkedList getList() {
    LinkedList list = new LinkedList();
    list.add(xxxxx);//想定している値をとりあえず代入
    list.add(xxxxx);//想定している値をとりあえず代入
    list.add(xxxxx);//想定している値をとりあえず代入
    return list;
} 


に変えれば、確実にnullはタグライブラリにわたらないですよね。
それで問題の切り分けが出来るのではないでしょうか。
また、setListメソッドにログ出力コードを埋め込めば、
セットされたのかセットされていないのか、判断できると思いますよ。
TON180
会議室デビュー日: 2005/05/19
投稿数: 14
お住まい・勤務地: 渋谷勤務
投稿日時: 2006-07-11 17:19
>かつのりさん
ご教授の通り、問題の切り分けで追い詰めていってます。

現在、nullでなければcollectionエラーにならないことが分かりました。
ということは、ActionのSQLは正しいので、その中間が怪しい。
ソコをちまちまとイジってるところです。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-07-12 11:37
2点。
1.ActionクラスでJSPに向けて
変数をrequestなりsessionにつめていると思うのですが、
スコープは意識しておられますか?
ちなみに、変数名のスペルミスでもnullでとります。

2.できるならば、Actionクラスのソースを公開していただけますか?
TON180
会議室デビュー日: 2005/05/19
投稿数: 14
お住まい・勤務地: 渋谷勤務
投稿日時: 2006-07-12 19:12
色々イジった結果、下記のエラーが出てきました。
struts-config.xmlの記述ミスだと思われます。

SEVERE: Parse Error at line 749 column 25: The content of element type "action-mappings" must match "(action)*".
org.xml.sax.SAXParseException: The content of element type "action-mappings" must match "(action)*".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1548)
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:1006)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:955)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:470)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:823)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3420)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3608)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:821)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:579)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:307)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:772)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:559)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:401)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:718)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:358)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1196)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
at org.apache.catalina.core.StandardService.start(StandardService.java:497)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
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.catalina.startup.Bootstrap.main(Bootstrap.java:203)
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-07-13 12:36
るぱんです。

XMLがstruts-config.xmlが要求するDTDの形にそぐわない為の
エラーが出ています。

<action-mappings>要素の子要素は<action>しか入れられないと書いてありますので、
struts-config.xmlをそのように修正すれば直ると思います。
他の要素が入っている可能性が高いですね。

xmlを扱うときには、全角スペースが入っていると落ちるケースもあるんで、
エディタで開いてみてください。

また、作成したXMLは、IEで開いてみると、
エラーがある場合は何行目がエラーか出ます。

試してみてください。

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