0

我在一个看起来不漂亮的 Java Bean 中有几个属性。例如最大速度。有太多的属性让我不想在我的 HTML 文件中手动编写它们,所以它们看起来很漂亮。

当前输出:max_speed、min_speed

想要的输出:最大速度,最小速度

问题:如何将“max_speed”、“min_speed”和其他 20 个属性映射到“Max Speed”、“Min Speed”等,以获得漂亮的输出打印?每次我想将它们添加到网页时,这是否可行而无需手动编写它们?

4

4 回答 4

0

在下面查看这些功能;

设置显示名称

    public void setDisplayName(String givenProperty){

    String displayName = null;

    // Perform Some Operation to generate you display Name
    // String [] tokens = givenProperty.split("_");
    // displayName = tokens[0] + " " + tokens[1];

    objectOfHashMap.put(givenProperty,displayName);

 }

要获取 DisplayName:

   public String getDisplayName(HashMap<String, String> givenHashMap, String givenProperty){

       String outputString = null;

       for(Map.Entry<String, String> pairs1 : givenHashMap.entrySet()){
           if(givenProperty.equals((String)pairs1.getKey())){
                outputString = pairs1.getValue();
            }
        }

       return outputString;
    }

让我知道,如果你有任何问题。

于 2013-08-01T13:38:49.450 回答
0

如果您编写一个需要字段名称(属性名称)并返回格式良好的输出的方法怎么办?

例如:

public String formatProperty(String propertyName, String userFriendlyLabel) {
    Field someField = this.getClass().getField(propertyName);

    Object value = null;
    if(someField != null) {
       value = someField.get(this);
    }

    return userFriendlyLabel + ": " + value;

}
于 2013-08-01T13:23:27.870 回答
0

我最终用这种方法来美化(如果允许作为一个词)我的属性,并为特殊情况添加一些 if else 语句。不能使用 switch case,因为 Java 1.6 显然不支持打开 String。注意来自 commons的WordUtils-package 。注意:请注意,这仅适用于我的特殊情况,其中所有属性名称都用下划线分隔。

public String niceDisplayName(String property) {
    String[] tokens = property.split("_");
    StringBuilder sb = new StringBuilder();
    for (int i=0;i<tokens.length;i++) {
        tokens[i] = WordUtils.capitalize(tokens[i]);
        sb.append(tokens[i]);
        if((i+1) < tokens.length) {
            sb.append(" ");
        }
    }
    return sb.toString();
}
于 2013-08-02T07:36:49.563 回答
0

下面显示的代码将适用于您的特定用例:如果该类中包含带有“_”的属性,它将返回特定类中定义的所有方法和属性的格式化名称。

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;


public class ReplaceMethodNames {

/**
 * @param args
 */
String max_speed;
String min_speed;
public static void main(String[] args) {
    // Provide the class Name as parameter you may want to format
    List<String> formattedNames =getFormattedProperties(ReplaceMethodNames.class); 
    System.out.println(formattedNames);
}

public static List<String> getFormattedNames(Class clazz){
    List<String> formattedNames = new ArrayList<String>();
    Method[] methods = clazz.getMethods();
    for(Method method:methods){
        String methodName = method.getName();
        StringBuilder newMethodName = new StringBuilder();
        for(int i = 0 ; i<methodName.length();i++){
            if(methodName.charAt(i)=='_') {
                newMethodName.append(' ');
                newMethodName.append(Character.toUpperCase(methodName.charAt(i+1)));
                i++;
            }else if(i==0){
                newMethodName.append(Character.toUpperCase(methodName.charAt(i)));
            }else {
                newMethodName.append(methodName.charAt(i));
            }
        }
        if(methodName.contains("_")){
            formattedNames.add(newMethodName.toString());
        }

    }
    return formattedNames;
}

public static List<String> getFormattedProperties(Class clazz){
    List<String> formattedNames = new ArrayList<String>();
    Field[] fields = clazz.getDeclaredFields();
    for(Field field:fields){
        String methodName = field.getName();
        StringBuilder newMethodName = new StringBuilder();
        for(int i = 0 ; i<methodName.length();i++){
            if(methodName.charAt(i)=='_') {
                newMethodName.append(' ');
                newMethodName.append(Character.toUpperCase(methodName.charAt(i+1)));
                i++;
            }else if(i==0){
                newMethodName.append(Character.toUpperCase(methodName.charAt(i)));
            }else {
                newMethodName.append(methodName.charAt(i));
            }
        }
        if(methodName.contains("_")){
            formattedNames.add(newMethodName.toString());
        }

    }
    return formattedNames;
}
public static void test_methodA(){}
public static void test_methodB(){}
public static void test_methodC(){}
public static void test_methodD(){}

}

于 2013-08-01T14:24:07.183 回答