2014-09-24 51 views
0

我在jsp文件中有一個登錄頁面,它也使用jstl和一個簡單的javascript驗證來檢查它的字段是否爲空。在我的jsp文件中被忽略的Javascript在spring中實現mvc

點擊'登錄'按鈕,它應該檢查字段是否已滿,然後如果爲true,則將表單詳細信息傳遞給Dispatcher Servelet並執行其餘的過程。

但是,點擊提交按鈕時,javascript被完全忽略,所以如果有空白字段出現異常。 這是怎麼回事?

這是我所使用的代碼:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>iLitmus Portal</title> 

<link href="<c:url value="resources/css/login.css" />" rel="stylesheet" type="text/css" /> 
<link href="<c:url value="resources/css/common.css" />" rel="stylesheet" type="text/css" /> 
<link href="<c:url value="http://fonts.googleapis.com/css?family=Amaranth" />"  rel="stylesheet" type="text/css" /> 
<link href="<c:url value="http://fonts.googleapis.com/css?family=Convergence" />" rel="stylesheet" type="text/css" /> 

<%@ include file="header.jsp" %> 


</head> 
<body > 

<div id="portal_banner" align="center"> 
<img src="resources/images/logo-main.png" id="logo"> 
<p>Litmus iPortal</p> 
</div> 


<div id="loginbox"> 
<div align="center"> 
<h3 id="chngpass_title">Login</h3> 

<form:form name="frm" method="post" action="login" onsubmit="return validateForm()" commandName="login"> 
<form:input type="text" path="emp_id" name="username" placeholder="Employee-ID"/><br> 
<form:input type="password" path="password" name="pwd" placeholder="Password"/> 
<br> 
<input type="submit" value="Login"> 
<br> 
<b> ${error} </b> 
<p id="firstuser">If you are a first time user, please login with the predefined password. You will be directed to change your password and set up 
a security question and answer.</p> 

</form:form> 
</div> 
</div> 

<script> 

function validateForm() 
{ 
if(document.frm.username.value==""&&document.frm.pwd.value!="") 
{ 
    alert("User Name should not be left blank"); 

    return false; 
} 
else if(document.frm.pwd.value==""&&document.frm.username.value!="") 
{ 
    alert("Password should not be left blank"); 

    return false; 
} 

else if(document.frm.pwd.value==""&&document.frm.username.value==""){ 

    alert("Username and Password cannot be empty!"); 
    return false; 
} 
return true; 
} 

</script> 
</body> 
</html>  

我想這首先通過將JavaScript代碼在外部.js文件,並沒有工作,所以我試圖把它在JSP頁面檢查是否可行。 我也試過了基於jQuery的驗證類似於這個邏輯,但也沒有奏效。

我在Eclipse Juno中使用Tomcat服務器進行此操作。

任何幫助將不勝感激!

+0

在jsp的頭部分發布你的腳本 – 2014-09-24 12:29:20

+0

@amitbhardwaj我也試過了。沒有工作:( – Yami 2014-09-24 12:32:22

+0

指定一個ID而不是名稱,'name'屬性用於將客戶端查找的id提交給客戶端,而且客戶端驗證的事實並不意味着您不應該進行驗證在服務器端,永遠不要相信你的客戶端在服務器上始終如此驗證! – 2014-09-24 12:33:45

回答

2

我試過你的代碼而沒有使用jsp <form>標籤,它在這個FIDDLE中工作正常。

而且以表單綁定到你的form bean,你必須使用相同的名稱和類似這樣的輸入域ID屬性,

<input type="text" name="username" id="username" placeholder="Employee-ID"/> 
<input type="password" name="pwd" id="pwd" placeholder="Password"/> 

而且,使用的路徑和名稱屬性組合在一起,同時使用jsp標籤不是一個好的做法。將JavaScript代碼放在<head>標籤中的小提琴上。

UPDATE

請使用您用於path屬性,並在你的Servlet類的字段名稱相同的名稱。例如,如果您將path屬性設置爲emp_id,則在您的Servlet中使用相同的名稱。其他領域也一樣。

+0

我要給這個鏡頭。'commandName'attribut e用'name'替換? – Yami 2014-09-24 12:51:03

+0

@Yami當然,讓我們知道如果你有任何問題嘗試這一點。 – VPK 2014-09-24 12:54:52

+0

驗證工作就像一個魅力,所以謝謝你!但不幸的是,當我點擊'登錄'時,拋出一個空指針異常,即表單細節沒有到達Dispatcher Servelet。 – Yami 2014-09-24 13:00:16