2010-07-29 64 views
0

我有一個JSP的一些領域。當我填寫字段並單擊發送按鈕時,我必須檢查數據庫中的數據是否存在;如果沒有,我會彈出一個提示用戶數據庫中不存在數據的彈出窗口。如果他們選擇繼續,它會在屏幕上顯示;如果沒有,它會返回到起點。問題顯示彈出(Java 1.4中)

我被困在那裏我顯示彈出式,因爲服務器不能顯示在客戶端上彈出

+0

您使用的是全回調用後發送的數據,或者是你使用Ajax來檢查的數據服務器? – 2010-07-29 14:06:13

+0

使用完整的回發調用 – Mercer 2010-07-29 14:09:45

回答

0

就讓Servlet的店在請求範圍的條件,讓有條件的JSP打印的JavaScript代碼。

的Servlet:

boolean exist = yourDAO.exist(parameters); 
request.setAttribute("exist", exist); 
request.getRequestDispatcher("page.jsp").forward(request, response); 

JSP(使用JSTL):

<c:if test="${!exist}"> 
    <script> 
     if (confirm('Data does not exist, do you want to continue?')) { 
      // Do whatever you want when user want to continue ("goes on screen"). 
     } else { 
      // Do whatever you want when user don't want to continue ("returns to starting point"). 
     } 
    </script> 
</c:if> 
+0

request.setAttribute(「exist」,exist); 不行我在日食的setAttribute(字符串,Object)已沒有了request.setAttribute(字符串,布爾) – Mercer 2010-07-29 15:34:53

+0

錯誤我根本不指望你還在就死了Java 1.4或更舊:)使用'Boolean'相反或升級到至少5.0,支持[autoboxing](http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html)。這是目前非常罕見的情況。在未來的問題中,我認爲你可以提到1.4或更高版本,這很明智。 Java 5.0帶來了很多改進。 – BalusC 2010-07-29 15:35:38

+0

我對現有的項目,我不能改變 – Mercer 2010-07-29 15:39:59

0

我會做大致如下的行somethign:

首先,設置一個布爾值標誌,而這樣做你的數據庫檢查

<% 
    boolean POPUP_FLAG = /*condition check*/ 
%> 

再後來,如果你的渲染代碼,你可以檢查標誌,並在頁面中包含一個window.open適當

<% 
    if (POPUP_FLAG) { 
%> 
    <script> 
    window.open("popup.jsp", "_blank"); 
    </script> 
    /* 
     Include here any special details to display on the main page in popup mode 
    */ 
<% 
    } else { 
%> 
    /* 
     Include here the normal information you would want displayed when not in popup mode 
    */ 
<% 
    } 
%> 
+0

[如何避免在JSP中的Java代碼(http://stackoverflow.com/questions/3177733/howto-avoid-java-code-in-jsp-files)。 – BalusC 2010-07-29 15:03:37