Да, вы можете построить SPA с Wicket, и его архитектура компонентов фактически делает его очень простым.
В принципе, какая бы страница была в обычном приложении, вы превращаетесь в панель и делаете панели с одной страницей с помощью Ajax вместо навигации между страницами. Вы можете использовать несколько панелей для нескольких разделов страницы и т. Д. Все это очень просто и естественно с фреймворком. Архитектура события, добавленная с 5.x, упрощает использование межсегментной связи.
Единственное, что вы теряете, тем не менее, это возможность закладки страниц.
Поскольку это единственная страница, URL-адрес в адресной строке браузера не изменится, и если пользователь создаст закладку, она всегда попадет на начальную страницу, а не на страницу, отображаемую при создании закладки.
Основы на стороне клиента (на основе javascript) (например, GWT) обычно реализуют это с помощью динамических якорей (строки в URL после #) для кодирования текущего состояния, чтобы приложение могло его восстановить, если это необходимо, но являясь средой, ориентированной на сервер, Wicket не может этого сделать (по крайней мере, не без особого кода). Возможно, выполнимо, но потребует некоторой мысли и работы.
Много раз это не является обязательной функцией (или может быть даже нежелательным поведением). Если это так, Wicket действительно может вам помочь.
О применении основанных на действии фреймворков (Struts, Spring MVC, Play и т. Д.), Они более подходят, если вам нужна архитектура с большим количеством клиентов. Но вы неизбежно кодируете большую часть своего приложения в Javascript или используете какой-либо Java-to-javascript-компилятор (GWT) и используете фреймворк, чтобы делать запросы, я имею в виду, реализовать службы (XML, JSON или некоторые вариант).
Вы считаете Play Framework? Он не имеет статуса (в то время как Wicket управляет состоянием на сервере), что может быть преимуществом, в зависимости от вашего варианта использования. – Hbf
На этот вопрос нельзя ответить фактами, любой ответ, который вы можете получить, будет очень субъективным. Я предлагаю вам просто проверить свои баллы с некоторыми фреймворками, [эта страница в Википедии] (http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java_2) может быть хорошей отправной точкой. – EECOLOR
Да, калитка может использоваться для одностраничных приложений. Однако я бы не сказал, что кривая обучения является постепенной, и архитектура проста. Считаете ли вы, что вы пишете весь свой код пользовательского интерфейса, скажем, javascript с простым априотом на сервере? – buritos