我有这些实体。
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Language {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String language;
}
以及
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Sentence {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String wordInFrench;
@NotNull
private String wordInOtherLanguage;
@ManyToOne(cascade = CascadeType.ALL)
@NotNull
private Language language;
}
其目的是创建一个淹没式组合框,它使用以下代码:
@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)
);
}
}
但结果是这样的。我只想看看属性
language
. 不是
Language(id = 5, language = fikus")
. 我该怎么做才能做到呢?
我用的是瓦丁14加积垢。
https://vaadin.com/directory/component/crud-ui-add-on