Arrays.asList
возвращает вам неизменный список, следовательно, UnsupportedOperationException
при добавлении. Вот javadoc, и вот что он говорит:
Возвращает список фиксированного размера , поддерживаемый указанным массивом. (Изменения в возвращаемом списке «сквозная запись» в массив.) Этот метод действует как мост между API на основе массива и на основе коллекции в сочетании с Collection.toArray (). Возвращенный список является сериализуемым и реализует RandomAccess.
blockquote>Для вашего случая вы действительно можете сделать это без какого-либо цикла со следующей строкой (т.е. с помощью конструктора):
List
temp = new ArrayList(origin); Обновление
[ 1110] Если вы хотите отформатировать, вы можете повторить и применить формат, например:
List
temp = new ArrayList<>(); for(String element : origin) { String formattedElement = format(element); temp.add(formattedElement); } Вот способ Java 8:
List
temp = origin.stream() .map(e -> format(e)) .collect(Collectors.toList());
Perhaps its the cross-window that is hurting you... Try making a function inside of opener that you call instead. Might help?
In opener:
window.changeMyElement = function(value) {
$(formelement).val(value).change();
}
From popup:
opener.changeMyElement(value);
Эта строка должна работать:
$(opener.document.formelement).change();
Согласно документации jQuery эта строка запускает событие изменения для каждого согласованного элемента.
Если это не работает для значит, где-то в вашем коде есть проблема. Можно ли вызвать событие onchange, изменив элемент формы вручную?
Вы также можете сделать:
window.opener.document.getElementById('controlname').fireEvent('onchange');
Или в вашем контексте:
$(opener.document.formelement).fireEvent('onchange');