私は、void javaメソッドであるEL関数を使用することをお勧めします。これは、人の姓と名のデータベースを更新する簡単なJSPです。したがって、名前とパスワードの2つのテキストフィールドがあります。ユーザーはそれらを入力してsubmitをクリックし、POSTでこれらを別のJSPに転送します。このjspは単にEL関数を呼び出し、2つのパラメータをとり、JavaメソッドputPerson(String, String)
から派生し、データベースへの接続を取得し、最初と最後の名前を適切な場所に配置する「put」と呼んでいます。現在、putPerson
は、文字列をデータベースに格納するだけなので、無効です。だから、この悪いプログラミングの練習ですか、もしそうなら、なぜですか?それは私には、迅速かつエレガントな解決策であると思われ、それは動作します。唯一の問題は、何らかの理由で "<"が出力されるので、${put(first, last)}
と言ってもそれを呼び出すことはできませんが、回避するのは簡単です。ではなぜ、EL関数をvoid戻り型で使用しないことをお勧めしますか?EL関数は、void以外の戻り値の型を持つJavaメソッドから取得する必要があるのはなぜですか?
答えて
印刷<
はどこか他の場所から来ているか、ELパーサーのバグです。しかしどちらの方法でも、あなたはELの機能でそれを行うべきではありません。たとえば.substring()
、.join()
(配列)、などのために、彼らはあなたがページを表示している間に使用され、いくつかのより複雑なプレゼンテーションロジックを必要としている -
EL機能はユーティリティであることを意味しています。
あなたがしたいことは典型的なストーリーであり、サーブレット(またはフレームワークを使用している場合は他のアクションコンポーネント)で行われます。
必要なメカニズムがELよりも古いです - そしてそれはスクリプトレットと呼ばれている:初期のJSPで
<%
whatever.putPerson("John", "Smith");
%>
別の構文は、単にプリント値に使用された(等号気づく):
<%=
whatever.getVal();
%>
コマンド/クエリの分離があるときにコードを維持する方が簡単だと考えられたため、ELはモデルをクエリする方法(豆のプロパティを読み取る)として導入されました。 ELにそのような機能を追加することは意味がありません:まったく同じことを達成する2つの方法があり、ELの概念を破ることになるでしょう式は常に値と型を持ちます。だから、
ます:voidメソッドを呼び出すためのELを使用して
- がuhmpf ...のようです...コードを実行するためのインポートを使用して:それは意味がありません。
- メソッドを呼び出すために作成された非常に簡単なメカニズム(スクリプトレット)を使用できるため、これは問題ではありません。
私は、スクリプトレットは推奨されていませんが、一般的にはスクリプトを避ける方が望ましいことを理解しています。しかし、あなたと他の人が説明したように、私がやっていたことも間違っていました/私はサーブレットを作ることにしました。とにかく助けてくれてありがとう – joseph
@joseph:文脈を知らずに物事を「間違っている」と考えるのは愚かです。アプリケーションに50個のjspとサーブレットがない場合、サーブレットを追加するだけで1つのことを行うことができます。これは愚かでも間違っていてもかまいません。「スクリプトを避ける」ことは、それ自身の目標ではなく、単にコードをうまく機能させることです。スクリプトレットを使用してコードを作成する場合は、先に進んでください。 btw、私はまだあなたの質問に答えたと信じています: "EL関数は非void戻り型のJavaメソッドから来なければならないのはなぜですか?質問自体が間違っていると言っているのではなく、「あなたはEL機能でそれをしてはいけません。 – fdreger
- 1. なぜ部分メソッドはvoid型の戻り値を持つことができますか?
- 2. なぜC言語のスレッドで関数の戻り値の型が(void *)である必要がありますか?
- 3. メソッドは異なる型の複数の戻り値を持つことはできますか?要するに
- 4. Javaエラー - 「無効なメソッド宣言、戻り値の型が必要」
- 5. windbgの関数から戻り値を取得するには?
- 6. エラーが発生したかどうかを示すvoid以外の戻り値が必要です
- 7. クラスと同じ名前のメソッドが戻り値の型を必要としないのはなぜですか?
- 8. マクロで関数の戻り値の型を取得する(C++)
- 9. カスタムクラスのオブジェクトを取得する型変数を記述する必要があるのはなぜですか?
- 10. void関数から値を取得する方法は?
- 11. voidとvoid以外の戻り関数のための完全な転送
- 12. 関数の戻り値の型を取得する方法
- 13. Dartでは、型がわからない場合は関数の戻り値にdynamicまたはObjectを注釈を付ける必要がありますか?
- 14. なぜread()の戻り値の型は整数ですか?
- 15. 引数が0で、戻り値の型がない関数を持つことはできますか?
- 16. C# - メソッドに戻り値の型が必要です
- 17. メソッドの戻り値を使用する必要がないのはなぜですか?
- 18. Voidメソッドの戻り値がありませんか?
- 19. Objective Cでメソッドの戻り値の型を取得する方法はありますか?
- 20. なぜパラメータを取得するのですか?hitTestObjectはnull以外のエラーである必要がありますか?
- 21. WCFメソッドの戻り値の型を汎用コレクションから配列に変更するのはなぜですか?
- 22. はNPAPI関数から複数の値を返す必要があります
- 23. QMLの戻り値をPythonメソッドから取得する
- 24. HtmlのJavaScript関数から戻り値を取得する方法は?
- 25. ネイティブの戻り値の型がSystem.InvalidProgramExceptionをスローするのはなぜですか?
- 26. スレッドから呼び出される戻り値の型を持つメソッド
- 27. C++ 11で必要な末尾戻り型の追加はなぜですか?
- 28. 私のVBScript関数の戻り値の型は何ですか?
- 29. 別の関数の戻り値を取得するには?
- 30. GWTのjavascriptからjavaへの戻り値の型 'any'を取得する方法は? (汎用型渡し)
なぜサーブレットに入れるのではなく、EL関数が必要なのですか? – Jacob