Вот взять, к примеру, сложные структуры. Сколько надо извращаться, чтобы сделать нечто вроде ввода данных в список. Много и сильно. Нотация с точко-разделителем как-бы работает, но при этом надо индексировать и делать доп-методы чтобы оно "поняло" что от него хотят.
За каким-таким стандартный тэг logic:iterate не умеет автоматом хранить "дерево" объектов непонятно.
Нет чтобы сделать keepTrack=true, что результировалось бы в честном выводе "внутренних" объектов как parent[#].child.property. Неееет, надо извращаться.
Также как проблема с чекбоксами легко решается -- добавить property.#clear в качестве скрытого элемента, и всё, можно хранить объект в сессии и не трахаться с очисткой чекбокса которого нет (ну или сделать forceComplete=true, когда то, что не указано, автоматом сбрасывается)
А это идиотское требование наличия формы-объекта "всегда", даже когда напрашивается просто "параметр" или вообще ничего (типа /Init).
Другие грабли это html элементы в стратс с портлетом. Оно не даёт честно закодировать namespace. Надо изгаляться. Но, возникает проблема. html:select onchange="<%=portletRequest.encodeNamesp