2016-04-18 71 views
0

我對JSP Bean的範圍 - 請求有問題。我有一個帶有jsp bean'message'的Index.jsp頁面,它的範圍是Request和一個頁面result.jsp。當我從Index.jsp向result.jsp發送請求時。我的bean'消息'應該保留它的值,但現在不會。jsp bean的範圍請求不起作用

我試着用範圍會話和我的bean工作得很好。我搜索關於這個問題的所有問題,但沒有答案能夠滿足我的問題。

這裏是我的代碼: 文件的index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8" isELIgnored="false" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<!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=UTF-8"> 
</head> 
<body> 

<% 
    String name = request.getParameter("name") == null ? "" : 
          request.getParameter("name"); 
    int age = (request.getParameter("age") == null || 
          request.getParameter("age") == "") ? 0 : 
           Integer.parseInt(request.getParameter("age")); 
%> 

<h1>Nice to meet you</h1> 

<form method="post" action="View/result.jsp"> 
<jsp:useBean id="message" class="com.java.Message" scope="request"/> 
<jsp:setProperty name="message" property="message" value="Hello world!"/> 

    <label>Name: </label> <br> 
    <input type="text" name="name" placeholder = "Phan Dinh The"/> <br> 

    <label>Age: </label> <br> 
    <input type="number" name="age" placeholder = "25"/> <br> 

    <input type="checkbox" name="title"/> Senior <br> 

    <input type="radio" name="language" value="c#"/> C# <br> 
    <input type="radio" name="language" value="java"/> Java <br> 

    <br><br> 

    <jsp:include page="View/date.jsp" flush="true"/> 


    <input type="submit" value="submit"/> 
    <br><br> 


    </form> 

    <br><br> 
</body> 
</html> 

文件result.jsp中

<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8" import="com.java.Message"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<!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=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 

    <jsp:useBean id="message" class="com.java.Message" scope="request"/> 
    <jsp:getProperty name="message" property="message"/> 
</body> 
</html> 

我的類別消息

package com.java; 

public class Message { 

private String message; 

public String getMessage() { 
    return message; 
} 

public void setMessage(String content) { 
    this.message = content; 
} 
} 

我使用Tomcat 8.0.23,JSP版本2.3,Servlet API 3.1

回答

1

當您在index.jsp文件使用

<jsp:setProperty name="message" property="message" value="Hello world!"/> 

,該屬性的作用範圍是index.jsp頁面的請求。一旦索引jsp頁面返回給客戶端,該請求就完成了。提交表單時,會創建一個新請求,並將其用於生成結果頁。因此,當您處於result.jsp代碼中時,沒有名爲'message'的請求作用域參數。

你總是可以把消息形式的

<input type="hidden" name="message">Hello World</input> 

場,並檢索它的results.jsp的方式。

+0

謝謝MeBigFatGuy,所以如果我想使用jsp:set和jsp:get,我唯一的方法是使用會話或應用程序範圍,不是嗎? – TerryPhan

+0

您可以舉例說明JSP Bean中的作用域請求和作用域頁面之間的區別。 – TerryPhan

+0

其他人可以幫我嗎? – TerryPhan