SOLVE - ошибка при вызове веб-службы принимает XML и тип параметра LocalDate [дубликат]

Этот вопрос появляется для всех поисков языка. Следовательно, для Котлина решение является чем-то вроде ниже:

val photoRef = FirebaseStorage.getInstance()
                .reference.child("images/stars.jpg")

// Code ommited - Do some saving - putFile

    photoRef.downloadUrl.addOnSuccessListener({ uri ->
                         product.imageUrl = uri.toString()
                     })

Однако это нехорошее решение. Вам лучше сохранить путь, а затем перестроить полный URL по требованию. Например:

photoRef.downloadUrl.addOnSuccessListener({ uri ->  
            val imagePath = uri.toString()
            // Save to database
        })

Теперь вы можете использовать его позже и только по запросу:

FirebaseStorage.getInstance().reference.child(product.imageUrl).downloadUrl
                    .addOnSuccessListener { uri ->
                        String imageUrl = uri.toString()
                        // Load in images
                    }
12
задан pwaring 22 March 2016 в 15:11
поделиться

2 ответа

Вам нужно будет создать XmlAdapter следующим образом:

public class LocalDateAdapter extends XmlAdapter<String, LocalDate> {
    public LocalDate unmarshal(String v) throws Exception {
        return LocalDate.parse(v);
    }

    public String marshal(LocalDate v) throws Exception {
        return v.toString();
    }
}

И аннотировать ваше поле, используя

 @XmlJavaTypeAdapter(value = LocalDateAdapter.class)

См. также javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters, если вы хотите определить ваши адаптеры на уровне пакета.

20
ответ дан nyname00 25 August 2018 в 21:40
поделиться

http://blog.bdoughan.com/2011/05/jaxb-and-joda-time-dates-and-times.html описывает установку отверстия.

Joda-Time предоставляет альтернативу классам даты и календаря, которые в настоящее время предоставляются в Java SE. Поскольку они предоставляются в отдельной библиотеке, JAXB не предоставляет сопоставление по умолчанию для этих классов.

Зарегистрировать адаптер для всех файлов в пакете. вы можете добавить package-info.java в пакет, который вы хотите зарегистрировать.

@XmlJavaTypeAdapters({
    @XmlJavaTypeAdapter(type=LocalDate.class, 
        value=LocalDateAdapter.class),
})
package PACKAGE_NAME;

import java.time.LocalDate;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;

Адаптер выглядит так:

import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.time.LocalDate;

public class LocalDateAdapter extends XmlAdapter<String, LocalDate>{

    public LocalDate unmarshal(String v) throws Exception {
        return LocalDate.parse(v);
    }

    public String marshal(LocalDate v) throws Exception {
        return v.toString();
    }

}
3
ответ дан R. Gulbrandsen 25 August 2018 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: