我通过Json创建了一个新的Java类,即:
{
"package" : "crud.vaadin",
"className" : "StudentForm",
"extension" : "AbstractForm",
"extensiongeneric" : "Person",
"properties" : {
"Name" : {
"type" : "MTextField"
},
"Email" : {
"type" : "MTextField"
}
},
"model" : "Person"
}将产生:
package crud.vaadin;
public class StudentForm extends AbstractForm<Person>
{
private MTextField Email;
private MTextField Name;
}我使用JCodeModel生成StudentForm,字段生成方法如下所示:
public void createFields(Map<String, Object> properties, JDefinedClass jc, JCodeModel model) {
for(String key : properties.keySet()){
//getType returns MTextField and key is either Email or Name
String type = getType(prop.get(key));
String name = key;
try {
JType jt = model.parseType(type);
JFieldVar field = jc.field(JMod.PRIVATE, jt, name);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}但是我想在创建源时初始化这些字段。
private MTextField email = new MTextField("Email");是否有方法通过初始化扩展JFieldVar?
发布于 2018-06-28 22:33:11
只需使用JExpression调用指定初始化.field,如下所示:
JFieldVar field = jc.field(JMod.PRIVATE, jt, name, JExpr._new(jt).arg(name));https://stackoverflow.com/questions/48249522
复制相似问题