Калитка: Условный дисплей в Шаблоне

Обновление 2019 года: Это все еще зависит от браузеров Ваш демографическое использование.

важная вещь понять с "новым" HTML5 file API состоит в том, что он не поддерживался до IEВ 10. Если определенный рынок, к которому Вы стремитесь, имеет более высокую, чем среднее число склонность к более старым версиям Windows, у Вас не могло бы быть доступа к нему.

По состоянию на 2017, приблизительно 5% браузеров являются одним из IE 6, 7, 8 или 9. Если Вы направляетесь в крупную корпорацию (например, это - инструмент B2B или что-то, что Вы поставляете для обучения), что число может взлететь. В 2016 я имел дело с компанией с помощью IE8 на более чем 60% их машин.

Это - 2019 с этого редактирования, спустя почти 11 лет после моего первоначального ответа. IE9 и ниже глобально вокруг 1%-й метки, но существуют все еще кластеры более высокого использования.

важная еда на дом от этого — безотносительно feature—, проверка, какой браузер Ваш пользователи используют . Если Вы не сделаете, Вы извлечете быстрый и болезненный урок в том, почему "работы для меня" не достаточно хорошо в поставляемом компоненте клиенту. caniuse является полезным инструментом, но отметьте, где они получают свою демографию от. Они не могут выровняться с Вашим. Это никогда не более верно, чем корпоративная среда.

Мой ответ с 2008 следует.

Однако существуют жизнеспособные методы non-JS загрузок файла. Можно создать iframe на странице (что Вы скрываетесь с CSS), и затем будьте нацелены на свою форму для регистрации на это iframe. Основная страница не должна перемещаться.

Это - "реальное" сообщение, таким образом, это не является совершенно интерактивным. При необходимости в состоянии, Вам нужно что-то серверная сторона для обработки этого. Это варьируется в широком масштабе в зависимости от Вашего сервера. ASP.NET имеет более хорошие механизмы. Простые сбои PHP, но можно использовать Perl или модификации Apache для обхождения его.

, Если Вам нужны несколько загрузок файла, лучше, действительно каждый регистрируют по одному (для преодоления максимальных пределов загрузки файла). Отправьте первую форму на iframe, контролируйте его прогресс с помощью вышеупомянутого и когда это закончилось, отправьте вторую форму на iframe и так далее.

Или использование решение для Java/Flash. Они намного более гибки в том, что они могут сделать с их сообщениями...

8
задан theomega 6 August 2009 в 23:36
поделиться

5 ответов

Хотя это старый вопрос, здесь может быть еще одно решение: wicket:enclosurethis )

Update: Теперь мне понадобилась эта функциональность самостоятельно (для jetwick). Я использую WebMarkupContainer один для состояния loggedIn и один для состояния loggedOut и устанавливаю правильную видимость:

if (loggedIn()) {            
   WebMarkupContainer loggedInContainer = new WebMarkupContainer("loggedIn");
   //## do something with the user
   User user = getUserSomeWhere();
   loggedInContainer.add(new UserSearchLink("userSearchLink"));
   add(loggedInContainer);
   add(WebMarkupContainer("loggedOut").setVisible(false));
} else {
   add(new WebMarkupContainer("loggedIn").setVisible(false));
   WebMarkupContainer loggedOutContainer = WebMarkupContainer("loggedOut");
   loggedOutContainer.add(new LoginLink() {...});
   add(loggedOutContainer);
}

Преимущество этого для меня в том, что я предотвращаю NullpointerExc в //## отмеченной строке и функция enclose в wicket выглядела бы более уродливо в этом случае, я думаю.

4
ответ дан 5 December 2019 в 17:39
поделиться

Думаю, поэтому существует EmptyPanel . Не зная больше о вашем коде, я могу только сказать, что то, что я думаю, вы делаете, я бы сделал с комбинацией некоторого дочернего элемента AbstractRepeater и Fragment . Если вы хотите рассказать больше о том, что вы хотите сделать, и, возможно, предоставить еще какой-то код, я буду рад помочь, чем смогу.

1
ответ дан 5 December 2019 в 17:39
поделиться

вы можете вызвать setVisible (false); на компоненте, который вы хотите скрыть.

0
ответ дан 5 December 2019 в 17:39
поделиться

Как сказал @miaubiz, вы можете вызвать setVisible (false) или переопределить метод isVisible (), если видимость зависит от другого состояния (например, поля заполнены).

3
ответ дан 5 December 2019 в 17:39
поделиться

Да, вы хотите переопределить isVisible. Это не позволит html-разметке isVisible=false даже отображаться на конечной html-странице. Также, согласно документации (упоминается в EmptyPanel), вы можете использовать WebMarkupContainer в качестве обертывающего компонента.

    this.add(new SimpleResourceModelLabel(NO_DATA_LABEL){
        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() { return myList.isEmpty(); } 
    });

    final WebMarkupContainer table = new WebMarkupContainer(MY_DATA_TABLE){
        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() { return !myList.isEmpty(); } 
    };
2
ответ дан 5 December 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: