I figured out the uri was incorrect. Sorry to have bothered everyone with an oversight.
Also, the line in math.jsp was incorrect <FORM action="/developer/technicalArticles/javaserverpages/JSP20/math.jsp" method="GET"> and should have been <FORM action="/jsp-examples/jsp2-tutorial/math.jsp" method="GET"> -----Original Message----- From: John Najarian [mailto:[EMAIL PROTECTED] Sent: Sunday, September 05, 2004 8:24 AM To: 'Tomcat Users List' Subject: Trouble getting examples to work I'm trying some of the examples from the http://java.sun.com/developer/technicalArticles/javaserverpages/JSP20/ site. Trying the 1 below the error message I get: Anyone have any ideas? Thanks HTTP Status 500 - _____ type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: The absolute uri: http://jakarta.apache.org/tomcat/jsp2-example-taglib %> <HEAD> <TITLE>Functions</TITLE> </HEAD> <BODY> <H3>Add Numbers</H3> <P> <FORM action= cannot be resolved in either web.xml or the jar files deployed with this application org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler. java:50) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409 ) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:118 ) org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibrary InfoImpl.java:316) org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java :147) org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418) org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483) org.apache.jasper.compiler.Parser.parseElements(Parser.java:1539) org.apache.jasper.compiler.Parser.parse(Parser.java:126) org.apache.jasper.compiler.ParserController.doParse(ParserController.java:22 0) org.apache.jasper.compiler.ParserController.parse(ParserController.java:101) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:203) org.apache.jasper.compiler.Compiler.compile(Compiler.java:470) org.apache.jasper.compiler.Compiler.compile(Compiler.java:451) org.apache.jasper.compiler.Compiler.compile(Compiler.java:439) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5 11) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:2 95) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.0.27 logs. Figure 2: Handling forms Developing and Using Functions The expression language allows you to define functions that can be invoked in an expression. Functions must be programmed as a public static method in a public class. Once the function is developed, its signature is mapped in a Tag Library Descriptor (TLD). To illustrate the use of functions, I use a simple example to add two numbers. First we write the Java code for the method to add two numbers. Code Sample 3 shows a static method that accepts two Strings, parses them to integers, and returns their sum. Code Sample 3: Compute.java package jsp2.examples.el; import java.util.*; public class Compute { public static int add(String x, String y) { int a = 0; int b = 0; try { a = Integer.parseInt(x); b = Integer.parseInt(y); }catch(Exception e) {} return a + b; } } Once this is successfully compiled using javac, the next step is to map the function's signature in the tag library. Code Sample 4 shows how to map the add function to the class containing the implementation of the function and the signature of the function. I will tell you where to add this later. Code Sample 4: Function Descriptor <function> <description>add x and y</description> <name>add</name> <function-class>jsp2.examples.el.Compute </function-class> <function-signature>int add(java.lang.String,java.lang.String) </function-signature> </function> Now, we can write the JSP page that uses the function. Code Sample 5 shows a form with two fields. The user enters two numbers and when the "Add Numbers" button is clicked, the function is called to add the numbers. The result is displayed on the same page. Code Sample 5: math.jsp <%@ taglib prefix="my" uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %> <HEAD> <TITLE>Functions</TITLE> </HEAD> <BODY> <H3>Add Numbers</H3> <P> <FORM action="/developer/technicalArticles/javaserverpages/JSP20/math.jsp" method="GET"> X = <input type="text" name="x" value="${param["x"]}"> <BR> Y = <input type="text" name="y" value="${param["y"]}"> <input type="submit" value="Add Numbers"> </FORM> <P> The sum is: ${my:add(param["x"],param["y"])} </BODY> </HTML> To run this example: 1. Copy Compute.java and save it at: C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\classes\jsp2\examples\el 2. Compile Compute.java using javac 3. Edit the file C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\jsp2\jsp2-example-taglib.tld and append the snippet of code in Code Sample 4 after the last </function> in the file and before </taglib> 4. Copy math.jsp to c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial 5. Request the jsp file math.jsp from a web browser If all goes well, you should see something similar to Figure 3.
