2012-07-08 55 views
1

我想添加一個按鈕,當我點擊它時日期應該顯示,但按鈕不起作用。使用scriptlet代碼的onClick函數調用

我的servlet:

package test.servlets; 

    import java.io.*; 
    import javax.servlet.*; 


     public class FunctionalTestServlet extends HttpServlet 
     { 

public void doGet(HttpServletRequest request,HttpServletResponse response)throws  

     ServletException, IOException { 



    response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     String text = request.getParameter("montext"); 
     String fileName = request.getParameter("testclass"); 

     out.println("<b><font color='blue'>The text is :</font></b>" 
     + "<b>"+ text +"</b>" + "<br>"); 

     out.println("<b><font color='blue'>The File name is :</font></b>" 
       + "<b>"+ fileName+"</b>" + "<br>"); 


     out.println("<% public void executeTest() {" + 

" java.util.Date d = new java.util.Date();out.println(d.toString()); } %>"); 
**out.println("<input type='submit' value='Execute Test'onclick='executeTest()'>");** 

    } 


} 

jsp頁面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 

"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <title>Insert title here</title> 
    </head> 
     <body> 

    <html:file properties="tonFichier" name="tonForm"/> 

    <form action="FunctionalTestServlet" enctype="multipart/form-data" method="get"> 
    <p> 
    Type some text (if you like):<br> 
    <input type="text" name="montext" size="30"> 
    </p> 
    <p> 
    Please specify a Test , or a set of tests:<br> 
    <input type="file" name="testclass" size="40" > 
    </p> 
    <div> 
    <input type="submit" value="Execute Test"> 

    </div> 
    </form> 
    </body> 
    </html> 

任何想法請 乾杯

+0

什麼不起作用,你點擊它時看到了什麼? – Tomer 2012-07-08 14:20:11

回答

2

這肯定是錯誤的:

out.println("<% public void executeTest() {" + 

你不能GE servlet中的nerate scriptlet代碼。 Scriptlet代碼屬於JSP。從JSP返回的任何文本(發送到out)都直接發送到客戶端。因此,傳遞給瀏覽器的HTML將包含scriptlet代碼 - 應該在服務器端進行評估!

Scriptlets只能出現在JSP中。

爲了使它更有趣,你試圖附加的Java executeTest()方法作爲一個JavaScript onclick處理器 - 永遠行不通:

out.println("<input type='submit' value='Execute Test'onclick='executeTest()'>") 

其實你的代碼是破碎的是這麼多的方法,它需要完整的反思/改寫。從理解servlet,JSP和JavaScript的工作方式,時間和地點開始。

我有種想法和猜測,它不需要JSP和servlet。只需在JavaScript中編寫onlick處理程序,並以某種方式修改DOM以打印當前日期。

+1

@tomasz說的是完全真實的,爲了達到你想要的效果,你可以使用如下所示的javascript: out.println(「「); \t out.println(「」); – 2012-07-08 14:45:35

+1

非常感謝你的解釋:))) – 2012-07-08 15:06:15