3

ELを使用してjspで渡された引数でBeanの関数を呼び出したいです。問題は、次のようなものが許可されていないことです: " ${teacherBean.certificationFor(${particularField})"

問題は、配列を反復処理し、引数として渡された配列内のすべての値に対して関数 authenticationFor を呼び出したいということです。次の方法で配列の値を取得しています。

だから基本的に私は次のようなことをしたい: ${teacherBean.certificationFor(${particularField}) しかし、私はそれを行うことはできません。他の方法でこれを行うことはできますか?

私は EL の初心者です。:) どんな助けでも大歓迎です。

4

4 に答える 4

5

正確にはどこで、何のためにそれをしたいですか?表示する値を取得するだけですか? 少なくとも、Java EE 6 より前の標準 EL では、そのようなメソッド引数を渡すことはできません。JBoss-ELまたはJava EE 6 ELでそれを行うことができます。構文は次のようになります。

${teacherBean.certificationFor(particularField)}

EL 式をネストすることはできないことに注意してください。EL 式は、それ自体で完全な式になっています。

ただし、標準の EL 実装ではMap、ブレース表記を使用してキーで値にアクセスできます。したがって、たとえばMap<String, String> certifications、キーが に対応しparticularField、値が関連付けられた値を持っている場合:

private Map<String, String> certifications = new HashMap<String, String>();

public Map<String, String> getCertificationFor() {
    return this.certifications;
}

次に、次の表記法を使用できます。

${teacherBean.certificationFor[particularField]}

これは舞台裏で解決されます

teacherBean.getCertificationFor().get(particularField)
于 2009-12-25T14:37:00.313 に答える
1

標準の EL では、EL 関数でラップされた関数を定義する以外にオプションはないと思います。

ドキュメントの下部にある http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.htmlを参照してください。

ただし、BalusC が既に述べたように、その種の依存関係をアプリに追加できる場合は、別の EL 実装を使用できます。

于 2009-12-25T14:48:02.217 に答える
0

別の関数としてより適切に表現される一般的な機能にアクセスする場合は、次のように記述できます。

${certificationFor[teacherBean][particularField]}

ここで、certificationFor は、 ELMethod.javaクラスを拡張する CertificationFor クラスにマップされます。メソッドで機能を実装しますresult(Object[] args)。このメソッドへの引数は${certificationFor}、EL でオブジェクトに渡した引数です。

public class CertificationFor extends ELMethod {
  public Object result(Object[] args) {  
    TeacherBean teacherBean = (TeacherBean) args[0];  
    String property = (String) args[1];

    // your implementation goes here
    return ....;
  }
}  

トリックは、オブジェクトをマップの連鎖マップとして使用することです。これは、複数の引数を EL 関数に渡す 1 つの方法です。

興味がある場合は、ここで完全なコードとコード スニペットを参照できます: http://www.vineetmanohar.com/2010/07/how-to-pass-parameters-in-el-methods/

于 2010-07-14T14:26:42.080 に答える
0

どうですか:

${teacherBean.certificationFor(particularField)}
于 2009-12-25T14:36:14.433 に答える