2016-04-18 21 views
0

JSP Beanのスコープ要求に問題があります。 jsp bean 'message'を持つIndex.jspというページがあり、そのスコープはRequestとpage result.jspです。 index.jspからresult.jspへのリクエストを送信します。私のbean 'メッセージ'は価値を保つべきですが、今はありません。jsp beanのスコープ要求が機能しない

私はスコープSessionで試してみました。私の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私はTomcatを8.0.23を使用

<%@ 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; 
} 
} 

、JSPのバージョン2.3、サーブレットAPI 3.1

答えて

1

あなたはindex.jspファイル内

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

を使用する場合、そのプロパティはindex.jspページの要求にスコープされます。 index 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

関連する問題