- ベストアンサー
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>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、川西です。 さっきの回答ですが、間違っていました。 <logic:iterate id="user", name="col", length="5"> iterateタグにproperty属性というのがあるのですが、 それをつけなければいけないと思います。 property属性にはcolのなかにあるメンバ変数を 指定します。
その他の回答 (3)
- k-makoto
- ベストアンサー率50% (1/2)
こんにちは、川西と申します。 <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がスコープ内にないよ というエラーメッセージです。
- run34ricky
- ベストアンサー率64% (38/59)
Strutsも、TagLibも利用したことがないので何ともいえませんが、 <logic:iterate id="user", name="col", length="5"> と、各属性をタグで区切っているのがまずいけないと思います。 <logic:iterate id="user" name="col" length="5"> と修正してみてどうでしょうか。
補足
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)
<logic:iterate id="user", name="col", length="5"> 途中のコンマは要らないのでは? strutsのサンプルJSPを見ると入っていません。
補足
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 となってしまいます。どの様に対処すればよろしいので しょうか。
お礼
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を再起 動した直後なら正しい結果が得られました。アドバイス ありがとうございました。
補足
川西様、アドバイスありがとうございます。 >iterateタグにproperty属性というのがあるのですが、 それをつけなければいけないと思います。property属性 にはcolのなかにあるメンバ変数を指定します。 変数col自体がCollectionクラスなので、そのメンバ変 数を指定しなければいけないとなると、どの変数をして しなければいけないのでしょうか?ちなみにcolは、 UserというBeanの集合体(コレクション)です。 iterateタグを使って、Userビーンを一個ずつ調べてい きたいと思っているのですが、どの様にすればよろしい のでしょうか?