【问题标题】:why calling vaadin method @ClientCallable with object return error?为什么调用带有对象返回错误的 vaadin 方法 @ClientCallable?
【发布时间】:2023-02-02 22:35:30
【问题描述】:

我使用 vaadin 23。 我通过属性将书籍对象列表传递给客户端,当我想使用 @ClientCallable 发回书籍对象时出现类型错误。

错误:

    java.lang.IllegalArgumentException: Class 'com.lib.web.business.book.BookDetailDesign' has the method 'onClickBook' whose parameter 0 refers to unsupported type 'com.lib.web.business.book.entities.Book'
    public class Book implements Serializable
    {
        private static final long serialVersionUID = 1L;
        private int idBook;
        private String name;
    } 
    public void onBookClicking(Book b)
        {
            System.out.println("BookID: "+q.getIdBook( ) );
            System.out.println("Category: "+q.getCategory( ) );
            
            getUI( ).ifPresent( ui -> ui.navigate( BookDetailDesign.class, URLEncoder.encode( b.getName( ).replace( "?", "%3F" ), StandardCharsets.UTF_8 ) ) );
        }

【问题讨论】:

    标签: java vaadin vaadin-fusion


    【解决方案1】:

    @ClientCallable 不“知道”如何将接收到的 JSON 反序列化为某个特定的 Java 对象。仅支持简单的原始值。

    如果你想发送一个复杂的对象,那么你可以通过使用JSON.stringify(object)在浏览器中创建一个明确的JSON字符串来解决这个问题,将其作为String参数接收到@ClientCallable方法并使用JSON库,例如Jackson 以适合您的 Java 类型的方式配置。

    【讨论】:

      猜你喜欢
      • 2019-06-21
      • 1970-01-01
      • 2017-04-26
      • 2015-05-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多