Java 为什么我的网格显示实体字段-Vaadin 14
我有这些实体Java 为什么我的网格显示实体字段-Vaadin 14,java,vaadin,crud,vaadin-grid,Java,Vaadin,Crud,Vaadin Grid,我有这些实体 @Entity @Data @AllArgsConstructor @NoArgsConstructor public class Language { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @NotNull private String language; } 及 pourpose将创建一个淹没式组合框,它使用以下代码执
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Language {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String language;
}
及
pourpose将创建一个淹没式组合框,它使用以下代码执行此操作:
@Route("addSentence")
@CssImport("./styles/shared-styles.css")
@CssImport(value = "./styles/vaadin-text-field-styles.css", themeFor = "vaadin-text-field")
public class AddSentenceView extends AppLayout {
/**
*
*/
private static final long serialVersionUID = 1L;
public AddSentenceView(SentenceService sentenceService, LanguageService languageService) {
Top top = new Top();
top.setTopAppLayout(this);
// crud instance
GridCrud<Sentence> crud = new GridCrud<>(Sentence.class);
// grid configuration
crud.getGrid().setColumns("wordInFrench", "wordInOtherLanguage", "language");
crud.getGrid().setColumnReorderingAllowed(true);
// form configuration
crud.getCrudFormFactory().setUseBeanValidation(true);
crud.getCrudFormFactory().setVisibleProperties("wordInFrench", "wordInOtherLanguage", "language");
crud.getCrudFormFactory().setFieldProvider("language",
new ComboBoxProvider<>("Language", languageService.findAll(), new TextRenderer<>(Language::getLanguage), Language::getLanguage));
// layout configuration
setContent(crud);
// logic configuration
crud.setOperations(
() -> sentenceService.findAll(),
sentence -> sentenceService.save(sentence),
sentence -> sentenceService.save(sentence),
sentence -> sentenceService.delete(sentence)
);
}
}
@Route(“添加句子”)
@CssImport(“./styles/shared styles.css”)
@CssImport(value=“./style/vaadin文本字段style.css”,themeFor=“vaadin文本字段”)
公共类AddSentenceView扩展了AppLayout{
/**
*
*/
私有静态最终长serialVersionUID=1L;
公共添加语句视图(语句服务语句服务,语言服务语言服务){
顶部=新顶部();
top.setTopAppLayout(这个);
//积垢实例
GridCrud crud=新的GridCrud(句子.class);
//网格配置
grad.getGrid().setColumns(“WordInforench”、“wordInOtherLanguage”、“language”);
crud.getGrid().setColumnReorderingAllowed(true);
//表单配置
grad.getCrudFormFactory().setUseBeanValidation(true);
grad.getCrudFormFactory().setVisibleProperties(“wordInFrench”、“wordInOtherLanguage”、“language”);
crud.getCrudFormFactory().setFieldProvider(“语言”,
新的ComboBoxProvider(“Language”,languageService.findAll(),新的TextRenderer(Language::getLanguage),Language::getLanguage));
//布局配置
组分含量(积垢);
//逻辑配置
积垢处理(
()->sentenceService.findAll(),
句子->句子服务。保存(句子),
句子->句子服务。保存(句子),
句子->句子服务.删除(句子)
);
}
}
但结果是这样的。我只想查看属性语言
。不是语言(id=5,Language=fikus”)
。我应该怎么做才能实现这一点
我用的是瓦丁14加上积垢。
语言字段是一个对象,由于您没有定义如何显示它,它默认为
toString
方法
您在网格中看到的是Lombok生成的语言#toString
方法的输出
您可以尝试将“language”
更改为“language.language”
,以获取实际的字符串字段。另一个选项是手动将列添加为addColumn(句子->句子.getLanguage().getLanguage())
提示:您可能不想使用级联类型。所有的都是从
语句
到语言
的关系。这意味着如果您删除一个句子,它也会删除该语言。语言字段是一个对象,由于您没有定义如何显示它,它默认为到字符串
m方法
您在网格中看到的是Lombok生成的语言#toString
方法的输出
您可以尝试将“language”
更改为“language.language”
,以获取实际的字符串字段。另一个选项是手动将列添加为addColumn(句子->句子.getLanguage().getLanguage())
提示:您可能不想使用
CascadeType。所有的都是从句子到语言的关系。这意味着如果您删除一个句子,它也会删除该语言。您在哪个类中谈论的是getGrid().setColumns(…)的“Language.Language”
。类语句
有一个字段语言
,它指的是语言
对象,它有一个字段语言
,它指的是字符串
。因此语言
对象的字符串
值应该是语言。语言
。好的。现在我明白了。更改tLanguage
类中的oString方法解决了这个问题。您在哪个类中谈论的是getGrid().setColumns(…)的“Language.Language”
。类语句
有一个字段语言
,它指的是语言
对象,它有一个字段语言
,它指的是字符串
。因此语言
对象的字符串
值应该是语言。语言
。好的。现在我明白了。更改t语言
类中的oString方法解决了这个问题。
@Route("addSentence")
@CssImport("./styles/shared-styles.css")
@CssImport(value = "./styles/vaadin-text-field-styles.css", themeFor = "vaadin-text-field")
public class AddSentenceView extends AppLayout {
/**
*
*/
private static final long serialVersionUID = 1L;
public AddSentenceView(SentenceService sentenceService, LanguageService languageService) {
Top top = new Top();
top.setTopAppLayout(this);
// crud instance
GridCrud<Sentence> crud = new GridCrud<>(Sentence.class);
// grid configuration
crud.getGrid().setColumns("wordInFrench", "wordInOtherLanguage", "language");
crud.getGrid().setColumnReorderingAllowed(true);
// form configuration
crud.getCrudFormFactory().setUseBeanValidation(true);
crud.getCrudFormFactory().setVisibleProperties("wordInFrench", "wordInOtherLanguage", "language");
crud.getCrudFormFactory().setFieldProvider("language",
new ComboBoxProvider<>("Language", languageService.findAll(), new TextRenderer<>(Language::getLanguage), Language::getLanguage));
// layout configuration
setContent(crud);
// logic configuration
crud.setOperations(
() -> sentenceService.findAll(),
sentence -> sentenceService.save(sentence),
sentence -> sentenceService.save(sentence),
sentence -> sentenceService.delete(sentence)
);
}
}