2017-09-15 10 views
0

私はjspページを持っています。ページは要求されたフィールドを文字列として持つ。JavaクラスへのJSP文字列

<% String token = ""+request.getParameter(); %> 

このjspページには、テストクラスもあります。

<%! 
     public static String usetoken() 
      { 
       String testtoken = ""+token; 
      } 

%> 

このusetokenクラスはトークン文字列を解決できません。それをどうすれば解決できますか?私はJSPページ内のクラス内で文字列を呼び出す必要があります。あなたが知っているかもしれないとして

おかげで、

+0

これはあなたにとって有益です。https://stackoverflow.com/questions/33183108/how-to-print-a-java-string-in-a-jsp-file – ottis79

+0

@ ottis79いいえ、そうではありません。軽くお読みください。私はそのように使うことができます。しかし、私はクラスにトークン文字列を挿入することはできません。 – Emin

+0

'token'はローカル変数で、定義コンテキストには存在しません(つまり、 '<%! ... %>'ブロック内) –

答えて

1

まず、JSPはサーブレットにコンパイルされます。すべてのスクリプトレットコードはservice()メソッドに "挿入"され、すべての宣言はサーブレットクラスに挿入されます。だから、あなたの状況に、私たちはこのような何か(簡体字)があります:あなたが見たよう

public class FooServlet extends HttpServlet { 

    public static String useToken() { 
     String testtoken = ""+ token; 
     return testtoken; 
    } 

    @Override 
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     String token = ""+ request.getParameter(); 
    } 
} 

を、はUserToken()メソッドは、「トークン」サービス内のローカル変数()メソッドについて知ることができません。

また、service()メソッドのパラメータであるため、jsp宣言でHttpServletRequestにアクセスすることはできません。

しかし、あなたはこのような何かのためにJSTLを使用することができます

。あなたは、JSP considered bad practice内のスクリプトレットを書いて、わからない場合

${token} 


:式言語(EL)を使用して

<c:set var="token" value="${requestScope.token}"/> 

どこでもあなたのJSPでアクセスして:あなたは、変数を宣言することができます。あなたはビジネスロジックを外部のどこかで行い、jspとしてビューを提供する必要があります。だから、JSTL、あなたのカスタムタグとELを使用してください。

関連する問題