0

を使用して文字列のリストを連結する必要がありますJava ELJSP/Web contextこれは ではなく、スタンドアロン Java クライアント ( を使用)であることに注意してくださいjuel-2.2.4.jar。式は次の形式です。

${for(int i=1; i<Employees.length; i++){Employee[i].Name + "--" }}

ELResolver私はすでに物を理解する習慣を持っていEmployeeます。私が期待している出力はString、すべての従業員の名前と間に区切り記号を付けたものです。

これはスタンドアロンJava ELアプリケーションでも可能ですか?

4

3 に答える 3

0
String allName="";
for(int i=1; i<Employees.length; i++){
allName+=Employee[i].Name + "--" 
}

最後allNameに、連結された名前が含まれます。i=1 から始めたので、最初の従業員の名前が抜けていないことを確認してください。

コメントで尋ねたことは、要件を満たすものを直接書くことはできません。ただし、以下のようなことはできます。

public String getConcatenatedString(String property){
String allName="";
    for(int i=1; i<Employees.length; i++){
     if(property.equals("name")) 
     allName+=Employee[i].Name + "--";
     else if(property.equals("designation"))
      allName+=Employee[i].designation + "--"; 
    }
return allName;
}

名前またはプロパティでメソッドを呼び出します。連結されたプロパティを取得します。

于 2012-11-29T09:31:40.010 に答える
0

次のコードを使用できます。

StringBuffer allEmployeeName= new StringBuffer();
for(int i=1; i<Employees.length; i++){
   allEmployeeName += Employee[i].Name + "--" 
 }
于 2012-11-29T09:35:53.593 に答える
0

おそらく、ヘルパー関数を作成する必要がありますが、Java がそのままの式でこれを処理できる方法はありません。

${Employee.joinEmployeesByName(Employees, "--")}

Employeeクラスのコード:

public static String joinEmployeesByName( Employee[] arr, String separator ) {
    //implement
}

リフレクションを使用した動的な例を次に示します。

public static String getFieldByName(Employee obj, String fieldName) {
    String ret = null;
    Class<?> c = obj.getClass();
    try {
        Field field = c.getDeclaredField(fieldName);
        ret = field.get(obj).toString();
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
    return ret;
}

public static String joinEmployeesByField(Employee[] arr, String fieldName, String separator) {
    if(arr.length < 1) {
        return "";
    }
    StringBuilder ret = new StringBuilder();
    ret.append(getFieldByName(arr[0], fieldName));
    for( int i = 1; i < arr.length; ++i ) {
        ret.append( separator );
        ret.append( getFieldByName( arr[i], fieldName) );
    }
    return ret.toString();
}

使用法は次のとおりです。

${Employee.joinEmployeesByField(Employees, "Name", "--")}
${Employee.joinEmployeesByField(Employees, "Designation", "--")}
于 2012-11-29T10:03:52.780 に答える