Data binding 在寻找解决方案的过程中。。。。 public class FieldContext { public final Map<?,?> args; public final ExecutableTemplate template; public f

Data binding 在寻找解决方案的过程中。。。。 public class FieldContext { public final Map<?,?> args; public final ExecutableTemplate template; public f,data-binding,binding,metaprogramming,playframework,Data Binding,Binding,Metaprogramming,Playframework,在寻找解决方案的过程中。。。。 public class FieldContext { public final Map<?,?> args; public final ExecutableTemplate template; public final int fromLine; public Class clazz = null; public Field field = null; public Object object = null; public Object valu

在寻找解决方案的过程中。。。。
public class FieldContext {
public final Map<?,?> args;
public final ExecutableTemplate template;
public final int fromLine;

public Class clazz = null;
public Field field = null;

public Object object = null;
public Object value = null;

private Map<String,String> attrs = new HashMap<String,String>();
private Map<String,Boolean> printed = new HashMap<String,Boolean>();

private List<Option> options;
...
public List<Option> determineOptions(FieldContext context) {
    List<Option> options = new ArrayList<Option>();

    if (context.field.getType().isEnum()) {
        for (Object option : context.field.getType().getEnumConstants()) {
            options.add(new Option(option.toString(), Message.get(option.toString())));
        }
    }

    return options;
}
public static void _selector(Map<?,?> args, Closure body, PrintWriter out, ExecutableTemplate template, int fromLine) {
    String field_name = args.get("arg").toString();
    TagContext.current().data.put("name", field_name);
    SelectHelper helper = HelperFactory.getHelper(SelectHelper.class);

    try {
        FieldContext context = new FieldContext(field_name, args, template, fromLine);
        helper.autoconfigure(context);

        TagContext.current().data.put("selected", helper.determineValue(context));

        out.print("<div class=\"formutil-field formutil-selector\">");
        out.print("<label for=\"" + context.getAttr("id") + "\">");
        out.print(helper.findOrCreateLabel(context));
        out.print("</label>");
        out.print("<select");
        context.printAttribute(out, "id", "name");
        out.print(">");

        if (context.hasOptions()) {
            for (Option option : context.getOptions()) {
                out.print("<option value=\"" + option.value + "\">" + option.label + "</option>");
            }
        }

        out.print("</select>");

        context.printErrorIfPresent(out);
        context.printValidationHints(out);
        out.println("</div>");
    }
    ...
}