SharePoint - Как действительно вставляют новые объекты с помощью веб-сервиса списка?

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

6
задан Brian Lyttle 17 September 2008 в 17:02
поделиться

1 ответ

Используя веб-сервис Списков для вставки объекта в список SharePoint может действительно быть хитрым. Так как этот метод имеет форму: XML в, XML, может быть трудно разобраться в параметрах.

Сначала необходимо смотреть на определение списка. Это может быть получено с методом GetList (), как показано ниже:

XmlNode listXml = sharePointLists.GetList(listName);
File.WriteAllText("listdefinition.xml", listXml.OuterXml);

Важный вот названия полей и их типов данных. Имена полей никогда не будут совпадать с теми, Вы видите в GUI SharePoint. Хорошим примером является поле Title, которое используется для первого поля списка.

Теперь, когда Вы знаете, что, можно создать запрос для движения в SharePoint. Пример:

<Batch OnError="Continue">
    <Method ID="1" Cmd="New">
        <Field Name="Title">Abcdef</Field>
        <Field Name="Project_x0020_code">999050</Field>
        <Field Name="Status">Open</Field>    
    </Method>
</Batch>

Пакетный элемент является корневым элементом XML. В Вас может поместить различные Методы. Они должны получить уникальный идентификатор (который используется для сообщения ошибок Вам), и команда, которая может, например, быть "Новой" или "Обновление". В Методе Вы помещаете Полевые элементы, которые указывают значение для каждого поля. Например, поле Title получает значение "Abcdef". Старайтесь использовать точное имя, когда оно возвращается GetList ().

Для выполнения запроса на SharePoint используйте UpdateListItems () метод:

XmlNode result = sharePointLists.UpdateListItems(listDefinition.Name, updates);

Возвращаемое значение является фрагментом XML, содержащим состояние каждого обновления. Например:

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
    <Result ID="1,New">
    <ErrorCode>0x00000000</ErrorCode>
    <z:row ows_ContentTypeId="0x010036F3F587127F1A44B8BA3FEFED4733C6" 
         ows_Title="Abcdef" 
         ows_Project_x0020_code="999050" 
         ows_Status="Open" 
         ows_LinkTitleNoMenu="Abcdef" 
         ows_LinkTitle="Abcdef" 
         ows_ID="1005"            
         ... 
         xmlns:z="#RowsetSchema" />
    </Result>
</Results>

Можно проанализировать это и посмотреть на ErrorCode для наблюдения, какие методы перестали работать.

На практике я создал класс обертки, который заботится обо всех грязных деталях для меня. К сожалению, это принадлежит моему работодателю, таким образом, я не могу совместно использовать его с Вами.

Этот класс обертки является частью внутренней утилиты, которая используется, чтобы получить информацию от нашей базы данных проекта и отправить ее на SharePoint. Так как это было разработано в течение времени компании, мне не разрешают отправить его здесь.

16
ответ дан 8 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

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