Установка параметра в корневом URL приводит к сбою калитки расположения ресурса

в настройках приложения калитки я хочу смонтировать параметр имени пользователя в корне, например

mountPage (Profile.class, "/${username}") аналогично тому, как Twitter сопоставляет имена пользователей со своими учетными записями. В калитке это, похоже, приводит к сбою алгоритма определения местоположения ресурса. В том смысле, что все файлы css, js теперь загружаются с 404.

Есть ли работа вокруг этого?


person F.O.O    schedule 05.04.2015    source источник


Ответы (2)


Код должен выглядеть так: mountPage (Profile.class, "/${username}"). Обратите внимание на $, который я добавил. Это означает, что параметр именованного пути является обязательным.

Пожалуйста, дайте более подробную информацию о проблеме, если это не решит проблему.

person martin-g    schedule 07.04.2015
comment
Я только пропустил доллар здесь. Это в моем коде. Кажется, точка монтирования / конфликтует с /${username}. - person F.O.O; 07.04.2015
comment
Ресурсы, расположенные с помощью ‹wicket:link›, теперь показывают ../resource/com.app.prototype.web.Authenticated/bootstrap.min-ver-1428321141752.css. Когда это было ./wicket/resource/com.app.prototype.web.Authenticated/bootstrap.min-ver-1428321141752.css - person F.O.O; 07.04.2015
comment
Если они конфликтуют, вы можете использовать домашнюю страницу в качестве точки входа. Если есть параметры.get(0), то это имя пользователя. ЕСЛИ такого параметра нет, покажите общую страницу. - person martin-g; 07.04.2015

Благодаря marting-g. Переопределите MountMapper, установив для сегментов URL значение 1, чтобы он не сопоставлялся с другими ресурсами.

 public class UsernameMountUrlMapper extends MountedMapper {

    public UsernameMountUrlMapper(String mountPath,
         Class<? extends IRequestablePage> pageClass) {
       super(mountPath, pageClass);
  }

  @Override
  protected boolean urlStartsWithMountedSegments(Url url) {
      return url.getSegments().size() == 1 &&      !url.getPath().equals("favicon.ico") && !url.getPath().equals("oops") && !url.getPath().equals("Index");
    }

 }
person F.O.O    schedule 17.04.2015