Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Наконец, мы прошли через процессы услуг по поддержке в Microsoft и получили решение!
Первый, Microsoft заявила это, чтобы быть ошибкой. Это - незначительная ошибка, потому что существует хорошее обходное решение, таким образом, может потребоваться некоторое более длительное время, пока эта ошибка не будет исправлена (специалист по поддержке сказал что-то со следующим пакетом обновления Одер следующая версия (!)).
, Но теперь для проблемы.
reaseon
Позволяют нам смотреть на код CAML от моего вопроса:
<Method ID='1' Cmd='Update'>
<Field Name='ID'>1</Field>
<Field Name='myDummyPropertyField'>NewValue</Field>
</Method>
По любой причине менеджер по Рабочему процессу не работает с идентификатором, мы вошли во вторую строку. Странный, все другие команды SharePoint работают с идентификатором, но не менеджером Рабочего процесса. Менеджер по Рабочему процессу работает с "полностью определенным" названием документа. Так, потому что мы не имели никакой подсказки и не сделали ввел любое полностью определенное название документа, значения по умолчанию менеджера по Рабочему процессу к названию библиотеки текущего документа. И теперь сообщение об ошибке начинает иметь смысл:
The object specified does not belong to a list.
, Конечно, объект (библиотека документа) не принадлежит списку, это - список.
решение
Мы должны добавить еще одну строку к нашему Запросу CAML:
<Field Name='FileRef'>/sites/mySite/myDocLib/myFolder/myDocument.txt</Field>
FileRef передает полностью определенное название документа менеджеру по Рабочему процессу, который - теперь полностью счастливый - запускает рабочий процесс объекта.
Быть осторожными, необходимо включать весь абсолютный путь сервера, опуская имя сервера (найденный, например, в свойстве ServerRelativePath SPItem).
Полная работа Запрос CAML:
<Method ID='1' Cmd='Update'>
<Field Name='ID'>1</Field>
<Field Name='FileRef'>/sites/mySite/myDocLib/myFolder/myDocument.txt</Field>
<Field Name='myDummyPropertyField'>NewValue</Field>
</Method>
будущее
, Возможно, это недокументированное поведение будет зафиксировано в одном из предстоящих пакетов обновления, возможно, нет. Microsoft Support принесла извинения и собирается выпустить Статью MSDN об этой теме. В течение следующего месяца я надеюсь, что эта статья о stackoverflow поможет разработчикам в той же ситуации.
спасибо за чтение!
Мы столкнулись с подобной проблемой с Рабочим процессом Одобрения. Для решения его мы записали наш собственный Получатель События и присоединили его к списку. В зависимости от того, был ли объект обновлен или отредактирован, мы затем запустили Рабочий процесс Одобрения.
Hope это помогает...
Я встретился с этой проблемой также и узнал, что, после того как рабочий процесс запустился, это не может быть перезапущено автоматически, неважно, как Вы обновляете объект. Можно, однако, вручную запустить рабочий процесс снова, так много раз, как Вам нравится.
Я видел то же поведение. Но затем Вы добираетесь сообщения как это , показывая людям, как создать один в день для установки почтовых напоминаний.