Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1468
  • Last Modified:

Passing parameters to XSL using JSTL?

I'm trying to pass a couple parameters back to XSL using the JSTL tag library, but the values are not getting passed.  My code is attached.  

The page loads, but the two values are not being passed.  All I get is a page without any content that would have been filled in the for-each loop.


///// JSP code ////
 
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %>
<%
	String pageStart = "1";
	String pageLimit = "10";
	
	if (request.getParameter("s") != null)
	{
		pageStart = (String)request.getParameter("s");
	}
	
	if (request.getParameter("l") != null)
		pageLimit = (String)request.getParameter("l");
	
	pageContext.setAttribute("pageStart",pageStart);
	pageContext.setAttribute("pageLimit",pageLimit);
 
%>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
 
<body>
    <c:import url="test2.xml" var="xmldoc" />
    <c:import url="test2.xsl" var="xslt" />
    <x:transform xml="${xmldoc}" xslt="${xslt}">
    	<x:param name="pageLimit" value="1"/>
         <x:param name="pageStart" value="10"/>
    </x:transform>
</body>
</html>
 
 
 
////// XSL: /////////
<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
	<xsl:template match="/">
      <xsl:param name="pageStart" />
      <xsl:param name="pageLimit" />
      <xsl:variable name="end" select="$pageStart + $pageLimit - 1"/>
  	  <xsl:variable name="docsort" select="Table/Row[position() &gt;= $pageStart and position() &lt;= $end]"/>
      <html>
        <body>
          <h2>Testing</h2>
          <table>
            <tr>
              <td>
                <xsl:if test="$pageStart - $pageLimit &gt;= 1">
                    <a href="?s={$pageStart - $pageLimit}&amp;l={$pageLimit}">prev</a>
                </xsl:if>
              </td>
              <td align="right">
                <a href="?s={$pageStart + 1}&amp;l={$pageLimit}">next</a>
              </td>
            </tr>
            <tr bgcolor="#CCCCCC">
              <th>Element 1</th>
              <th>Element 2</th>
            </tr>
            <xsl:for-each select="$docsort">
                    <tr>
                    	<xsl:for-each select="Table/Row/Cell">
                      		<td><xsl:value-of select="element1"/></td>
                      	</xsl:for-each>
                    </tr>
            </xsl:for-each>
          </table>
        </body>
      </html>
	</xsl:template>
</xsl:stylesheet>
 
//// XML FILE ////
 
<?xml version="1.0"?>
<Table>
   <Row>
    <Cell>testing</Cell>
    <Cell>John/Cell>
    <Cell>Smith</Cell>
    <Cell>Ohio</Cell>
   </Row>
</Table>

Open in new window

0
cacklebunny
Asked:
cacklebunny
  • 2
1 Solution
 
Geert BormansCommented:
The parameters are local to the template for match="/"
and should be global

 <?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
      <xsl:param name="pageStart" />
      <xsl:param name="pageLimit" />
      <xsl:template match="/">
...

should work
 
0
 
cacklebunnyAuthor Commented:
Sure did, thanks!
0
 
Geert BormansCommented:
welcome
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now