web-dev-qa-db-ja.com

jsp式タグの違い<%と<%=

私は多かれ少なかれ<%の違いを知っています!と<%ですが、<%=と<%の違いがわかりません。現在<%= ...%>を使用している式にロジックを導入することで、null値エラーを回避しようとしています。タグを<%...%>に置き換えないと、エラーが発生します。しかし、ビルド後、サーブレットエラーではなくjspエラーが発生します。元のコードをここに実際に貼り付けることはできませんが、<%= ...%>内のコードは、Struts 1プロジェクトのサーブレット引数として渡されたネストされた配列オブジェクト(別の配列オブジェクト内の配列オブジェクトのようなもの)を本質的に取得します。オブジェクトのプロパティがまだインスタンス化されていない場合に備えて、try ... catchステートメントを追加したいだけです。

<%=((package.package.package.ClassName)session.getAttribute("attrName")).getObjectList()[0].getSecondObject.length%>; 

これはjspの問題ですか、それともStruts 1の問題ですか?また、2つのタグの違いは何ですか?

11
rocklandcitizen

<%...%>の間に、Javaで必要なロジックを記述できます。

<%=...%>を使用すると、括弧内の式の結果が画面に出力されます。だから例えば書くのではなく

<% System.out.println("Hello World") %> 

あなたは単に書くことができます

<%= "Hello world" %> 

基本的に、<%=%>が行うことは、評価されている式のtoString()メソッドを呼び出すことです。

必要に応じてnullチェックロジックを追加する必要がある場合は、

 <%..%>

参照できるリンクは次のとおりです。

http://www.easywayserver.com/jsp/JSP-example.htmhttp://www.tutorialspoint.com/jsp/jsp_syntax.htm

15
Dan Dinu

<%%> ------>このタグは、JSPではスクリプトレットタグとして呼び出されます。実際には、.jspファイルで行うことは何でも、内部でサーブレットに変換されます。サーバーでは、内部で実行されるのはサーブレットのみなので、サーブレット内のout.println()内にすべてのHtmlコードを記述できますが、開発者として、バックエンドとフロントエンドに別々のセクションを設定するのは簡単です。それが、JSPファイルが必要な主な理由です。したがって、サーブレットのservice()メソッドに関連することを行う必要がある場合は、このタグの<%%>内で行います。何かの出力を取得する必要があるだけの場合は、<%=%> ---->式タグを使用します。内部でJSPファイルがサーブレットにどのように変換されるかを確認する必要がある場合は、netbeans IDEを使用してください(それを表示する別のツールがあります)。

  • サーブレットのservice()メソッド内のコードの記述== <%%> [スクリプトレットタグ内のコーディング]

  • サービスメソッドの外側で、サーブレットクラスの内側にコードを記述== <%=%> [式タグ内のコーディング]

0