Я хотел удалить текстовые поля, которые я ранее вставил в свой документ .odt. В content.xml они выглядят так:
<text:user-field-decls>
<text:user-field-decl text:name="id" office:string-value="${baza.id}" office:value-type="string"/>
...
</text:user-field-decls>
Поскольку, как я читал здесь, способ удалить что-либо — это передать его интерфейсу, который имеет dispose( ) я пробовал следующий код:
XTextFieldsSupplier xTextFieldsSupplier = (XTextFieldsSupplier) UnoRuntime.queryInterface(
XTextFieldsSupplier.class, xDoc);
XNameAccess xNamedFieldMasters = xTextFieldsSupplier.getTextFieldMasters();
Object fieldMaster = xNamedFieldMasters.getByName("com.sun.star.text.fieldmaster.User."+name);
((XComponent)fieldMaster).dispose()
Где имя — это имя поля, которое я хотел удалить. Я предполагаю, что поле не используется нигде в документе, кроме объявления. Однако это вызывает исключение ClassCast:
java.lang.ClassCastException: com.sun.star.uno.Any cannot be cast to com.sun.star.lang.XComponent
на последней строке. И если это так, как я могу удалить поле?