Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的网格显示实体字段-Vaadin 14_Java_Vaadin_Crud_Vaadin Grid - Fatal编程技术网

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”
。类
语句
有一个字段
语言
,它指的是
语言
对象,它有一个字段
语言
,它指的是
字符串
。因此
语言
对象的
字符串
值应该是
语言。语言
。好的。现在我明白了。更改t
Language
类中的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)
        );
        
    }

}