Begin states --- <br />
<%-- Sets the available states so they can be parsed with XPath --%>
<c:set var="statesHTML">
<state:state name="state"/>
</c:set>
<% String[] states = {"CO", "AZ"};
pageContext.setAttribute("userStates", states);
%>
<x:parse var="states" xml="${statesHTML}"/>
<%-- Loop through and parse the list of states --%>
<x:forEach var="option" select="$states/select/option">
<c:forEach var="current" items="${userStates}">
<x:if select="$option/@value[. = $current]">
<x:out select="$option/@value"/> -
<x:out select="$option/text()"/><br />
</x:if>
</c:forEach>
</x:forEach>
-----Original Message-----
From: Matt Raible [mailto:[EMAIL PROTECTED]
Sent: Saturday, September 06, 2003 7:43 AM
To: [EMAIL PROTECTED]
Subject: ClassCastException when using x:forEach on a node list
I have the following JSTL code that puts an XML document into the
pageScope. The <state> tag can be found at
http://www.servletsuite.com/servlets/statetag.htm and is basically a
<select> with all the states as options. I want parse the options and
compare their values with a comma-delimited list of states from a bean
in the request. That's later - first I want to just get the list of
states and display them using XPath.
<c:set var="statesHTML">
<state:state name="state" default="<%=state%>" />
</c:set>
<x:set var="states" select="$statesHTML"/>
This all works fine - and I can print out the states using:
<c:out value="${pageScope.states}"/>
Which results in:
<select name="state"> <option value="AL">Alabama</option> ... </select>
However, if I try to get the <options> with XPath and loop through them
with <x:forEach>, I get the following error. Here's my code for
obtaining that information:
<x:forEach var="state" select="$states/select/option/*">
<c:out value="${state}"/>
</x:forEach>
java.lang.ClassCastException
at
org.jaxen.dom.DocumentNavigator.getChildAxisIterator(DocumentNavigator.j
ava:172)
at
org.jaxen.expr.iter.IterableChildAxis.iterator(IterableChildAxis.java:82
)
at org.jaxen.expr.DefaultStep.axisIterator(DefaultStep.java:139)
at
org.jaxen.expr.DefaultLocationPath.evaluate(DefaultLocationPath.java:188
)
at
org.jaxen.expr.DefaultPathExpr.evaluate(DefaultPathExpr.java:156)
at
org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:107)
at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:716)
at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:239)
at
org.apache.taglibs.standard.tag.common.xml.XPathUtil.selectNodes(XPathUt
il.java:254)
at
org.apache.taglibs.standard.tag.common.xml.ForEachTag.prepare(ForEachTag
.java:90)
at
javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.jav
a:262)
at
org.apache.jsp.userForm_jsp._jspx_meth_x_forEach_0(userForm_jsp.java:165
6)
at
org.apache.jsp.userForm_jsp._jspService(userForm_jsp.java:560)
I'm deploying the following JSTL JARs in WEB-INF/lib:
jaxen-full.jar
jstl.jar
standard.jar
Environment:
Tomcat 4.1.27
JDK 1.4.2
Windows XP
Thanks,
Matt
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]