• ベストアンサー

Struts、Iterateタグの使い方

StrutsのIterateタグを使おうとしているのですが、 jsp.error.unterminated.tagというエラーが出てしまい ます。Iterateタグの使い方に問題があると思うのです が、どのように対処すれば良いのかが分かりません。ご 存知の方、教えて頂けませんでしょうか。お願いしま す。 <%@ page language="java" import="java.util.Collection, aloha.business.UserBO" %> <%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> <%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> <jsp:include page="header.jsp" flush="true" /> <% UserBO UserBO = new UserBO(); Collection col = userBO.findAllUser(); %> <table><tr> <logic:iterate id="user", name="col", length="5"> </logic:iterate>

質問者が選んだベストアンサー

  • ベストアンサー
  • k-makoto
  • ベストアンサー率50% (1/2)
回答No.4

こんにちは、川西です。 さっきの回答ですが、間違っていました。 <logic:iterate id="user", name="col", length="5"> iterateタグにproperty属性というのがあるのですが、 それをつけなければいけないと思います。 property属性にはcolのなかにあるメンバ変数を 指定します。

northcurlcurl
質問者

お礼

JSPにスクリプトを書くのもどうかと思っていたので、 思い切ってCollectionBeanという新しいクラスを作る事 にしました。具体的には、JSPからビーンのGetが呼ばれ ると、Getの中でuserBO.findAllUser()呼び、その結果 をJSPの戻すという形です。 <jsp:useBean id="cols" class="aloha.entity.CollectionBean" /> <table><tr> <logic:iterate id="col" name="cols" property="users" length="5" > <td>ID: <bean:write name="col" property="id" /></td> </logic:iterate> 最近”Tomcatを再起動した直後なら動くのに、しばらく すると動かなくなる”Actionが多発しているので、結果 はなんとも言えないのですが、例によってTomcatを再起 動した直後なら正しい結果が得られました。アドバイス ありがとうございました。

northcurlcurl
質問者

補足

川西様、アドバイスありがとうございます。 >iterateタグにproperty属性というのがあるのですが、 それをつけなければいけないと思います。property属性 にはcolのなかにあるメンバ変数を指定します。 変数col自体がCollectionクラスなので、そのメンバ変 数を指定しなければいけないとなると、どの変数をして しなければいけないのでしょうか?ちなみにcolは、 UserというBeanの集合体(コレクション)です。 iterateタグを使って、Userビーンを一個ずつ調べてい きたいと思っているのですが、どの様にすればよろしい のでしょうか?

その他の回答 (3)

  • k-makoto
  • ベストアンサー率50% (1/2)
回答No.3

こんにちは、川西と申します。 <logic:iterate id="user", name="col", length="5"> このタグのname属性にcolとありますが、 colというループさせるためのBeanはありますか? >org.apache.jasper.JasperException: Cannot find >bean col in scope null のエラーはcolという名前のBeanがスコープ内にないよ というエラーメッセージです。

参考URL:
http://liffey2.infoseek.livedoor.com/java/struts/index9.html
回答No.2

Strutsも、TagLibも利用したことがないので何ともいえませんが、 <logic:iterate id="user", name="col", length="5"> と、各属性をタグで区切っているのがまずいけないと思います。 <logic:iterate id="user" name="col" length="5"> と修正してみてどうでしょうか。

northcurlcurl
質問者

補足

run34ricky様のおっしゃるとおり、コンマが必要ありま せんでした。しかし、今度は以下の様なエラーが出てし まいます。 org.apache.jasper.JasperException: Cannot find bean col in scope null iterateタグに、scope="request"を加えても javax.servlet.ServletException: Cannot find bean col in scope request となってしまいます。どの様に対処すればよろしいので しょうか。

  • yuji
  • ベストアンサー率37% (64/169)
回答No.1

<logic:iterate id="user", name="col", length="5"> 途中のコンマは要らないのでは? strutsのサンプルJSPを見ると入っていません。

northcurlcurl
質問者

補足

Yuji様のおっしゃるとおり、コンマが必要ありませんで した。しかし、今度は以下の様なエラーが出てしまいま す。 org.apache.jasper.JasperException: Cannot find bean col in scope null iterateタグに、scope="request"を加えても javax.servlet.ServletException: Cannot find bean col in scope request となってしまいます。どの様に対処すればよろしいので しょうか。

関連するQ&A