- PR -

struts1.0のタグライブラリでnullのif文分岐を行いたい。

1
投稿者投稿内容
tomo
常連さん
会議室デビュー日: 2004/07/31
投稿数: 20
投稿日時: 2004-08-17 15:44
いつもお世話になっております。
現在 struts1.0 ・ TOMCAT4.1 を用いてWebアプリケーションを作っています。

今行いたい事は、アクションFormからある値(Aとします)を取得して画面に結果表示を行う際に、同じくアクションFORMから取得したある別の値(B)がNULLでなければリンクをつけて表示し、NULLであればリンクをつけない という処理です。

jspで、struts-logicタグライブラリの logic:equalタグを用いればよいのかと思いましたが、うまくいきません。
jspでは以下のように記述しています。

<logic:notEqual name="detail" property="A" value="null">
<A href="xxx>
<bean:write name="detail" property="B"/>
</logic:notEqual>
  <logic:equal name="detail" property="A" value="null">
  <bean:write name="detail" property="B"/>
</logic:equal>

TOMCAT起動時に、以下のエラーが出ます。
アプリケーションは起動できますが、該当画面の処理を行うと、
画面が固まってしまいます。

2004/08/17 15:18:58 org.apache.commons.digester.Digester fatalError
致命的: Parse Fatal Error at line 2 column 3: The markup in the document preceding the root element must be well-formed.
org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(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.XMLScanner.reportFatalError(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.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:1567)
at org.apache.catalina.startup.ContextConfig.tldScanStream(ContextConfig.java:977)
at org.apache.catalina.startup.ContextConfig.tldScanTld(ContextConfig.java:1006)
at org.apache.catalina.startup.ContextConfig.tldScan(ContextConfig.java:870)
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:647)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:243)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3587)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:754)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:363)
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(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
log4j:WARN No appenders could be found for logger (jp.co.ogis_ri.jag.webapp.JagActionServlet).
log4j:WARN Please initialize the log4j system properly. (以下略)

なにがいけないのでしょうか? 
value="null" というのがおかしいのでしょうか?

ご存知の方ご教授いただけるとうれしいです。
ろっぷす
会議室デビュー日: 2004/07/27
投稿数: 8
投稿日時: 2004-08-17 17:10
はじめまして、ろっぷすと申します。

スレの件ですが、
残念なことに、struts1.0ではNULL値と比較するカスタムタグは
用意されていないと思います。

struts1.1であればlogic:emptyタグが用意されているんですが・・・

>なにがいけないのでしょうか? 
>value="null" というのがおかしいのでしょうか?

strutsのAPIリファレンスを参照してみると答えがわかると思います。
参照: http://www.jajakarta.org/struts/struts1.0/ja/src/share/org/apache/struts/taglib/logic/package.html
ちょま吉
大ベテラン
会議室デビュー日: 2004/08/04
投稿数: 112
投稿日時: 2004-08-18 23:22
独自のカスタムタグを作ってみてはいかがでしょうか?
tomo
常連さん
会議室デビュー日: 2004/07/31
投稿数: 20
投稿日時: 2004-10-13 21:48
ちょま吉さん ろっぷすさん ありがとうございます。
大変遅くなりましたが、value="null" 回避のため、データベースから値を
取得してセットする際に、nullのときは空文字 "" をセットすることで対応しました。
<logic:notEqual name="detail" property="A" value="">
<A href="xxx>
<bean:write name="detail" property="B"/>
</logic:notEqual>
  <logic:equal name="detail" property="A" value="">
  <bean:write name="detail" property="B"/>
</logic:equal>
これが良いのかはわかりませんが、とりあえず期待通りの動きになりました。
以上ご報告まで。
みなさま本当にありがとうございました。
1

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