2014-12-04 42 views
2

我的設置請求屬性在Servlet中的變量:一些文本被添加到JavaScript的

String subject = "Test Subject"; 
request.setAttribute("subject", subject); 

而且在JSP中使用JSTL設置這

<input type='text' value='${subject}' id='subject'> 

在JSP查看源代碼顯示它正確值。

但在JavaScript函數當我憑身份證retrive主題的價值像

var subject = document.getElementById('subject').value; 
alert(subject); 

這表明一些額外的文本被在主題中添加像

Test Subject�������������������������������������������� 

我的JSP頁面

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@ page contentType="text/html;charset=UTF-8" language="java"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> 
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
<html> 
<head> 
<meta charset="UTF-8"> 
    <title>test</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="/css/bootstrap.css" media="screen"> 
    <link rel="stylesheet" href="/css/bootstrapBlue.css" media="screen"> 
    <script type="text/javascript" src="/js/jquery-1.10.2.min.js"></script> 
</head> 
<body> 
    <div class="row"> 
     <div class="col-lg-10"> 
     <h2>${subject}</h2> 
     <div class="form-group"> 
      <input class="form-control" name="subject" id="subject" value="${subject}"> 
     </div> 
     </div> 
    </div> 
    <script type="text/javascript" src="/js/bootstrap.min.js"></script> 
    <script type="text/javascript" src="/js/bootstrap-switch.js"></script> 
</body> 
</html> 

回答

3

在我的情況下,下面的代碼工作。通過將字符串應用於字符串,您將獲得所需的輸出。

request.setAttribute("subject", new String("Test Subject".getBytes(), "UTF-8")); 
2
request.setAttribute("subjet", subject); 

有錯字問題。它應該是

request.setAttribute("subject", subject); 
+0

我編輯過的問題請看。 – yogesh 2014-12-04 13:54:10

+0

我認爲這不是問題,主題值正確地插入到輸入中,並且由於OP說JSP輸出是正確的,所以如果是關於'setAttribute',將永遠不會有任何結果。 – 2014-12-04 13:58:16

+0

請檢查編碼。 @chsdk發佈了meta標籤。 – 2014-12-04 13:59:01

2

您可以訪問請求與$直接屬性{attrName}

你的JavaScript代碼應該如下:

var subject = '${subject}'; 

alert(subject); 

錯字是有 'subjet'

2

我認爲你的問題是一個編碼問題,因爲你的subject值正確插入在html輸入標籤中,但獲得這個輸入值顯示這些字母,所以確保你的html頁面使用UTF-8 encoding,使用以下:

<head> 
<meta charset="UTF-8"> 
</head> 

看看HTML Unicode (UTF-8) Reference以獲取更多信息。

編輯: 然後確保你的JSP在UTF-8太編碼:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

因爲,因爲頁面投放時的HTML meta標籤被忽略JSP可與HTML格式編碼的問題通過HTTP。,看看the answer here

+0

我已經設置charset =「UTF-8」。 – yogesh 2014-12-04 14:10:28

+0

好吧,然後確保您的項目編碼是UTF-8而不是ISO8859-1或其他任何東西,並使您的jsp編碼爲UTF-8? – 2014-12-04 14:40:09

+1

request.setCharacterEncoding(「UTF-8」);工作正常。 – yogesh 2014-12-05 10:11:38

相關問題