Primefaces: передать значение Bean при помощи p:remoteCommand

Дата публикации: 14.10.2013
Автор: Морозов Сергей
Просмотров: 10027

Представьте себе что у нас есть Web приложение, в котором мы хотим дать понять Managed Bean какой у нас размер экрана. Чаще всего это используется если мы хотим определить зашел пользователь со смартфона или другого мобильного устройства. Для того чтобы передать Bean какое либо значение, в данном случае булевое true или false, мы будем использовать специальный тэг Primeface'а: < p:remoteCommand> , который благодаря <f:setPropertyActionListener передаст нужное нам значение.

Что бы определить размер мы будем использовать самый обычный if опрос, на всякий случай приведены все самые популярные команды javascript по выявлению ширины экрана.
После установления размера экрана, будет вызван один из двух методов: setSmallResolution() или setBigResolution(), которые в свою очередь включат соответствующий этим методам remoteCommand.

  //xhtml 
  <h:form id="frmContent">
			...
			//интересующяя нас часть кода 
            <p:remoteCommand name="setBigResolution">  
               <f:setPropertyActionListener value="#{false}"   
                                             target="#{sessionBean.smallResolution}" />  
            </p:remoteCommand>  
            <p:remoteCommand name="setSmallResolution">  
                <f:setPropertyActionListener value="#{true}"   
                                             target="#{sessionBean.smallResolution}" />  
            </p:remoteCommand> 
			...			
        </h:form>
		
		//JavaScript
        <script type="text/javascript">
            <!--
            /* <![CDATA[ */  
            window.onload = isResolutionSmallerThen();

            function isResolutionSmallerThen(){
                var width =680;
                if (document.body && document.body.offsetWidth) {
                    winW = document.body.offsetWidth;
                }
                if (document.documentElement &&
                    document.documentElement.offsetWidth ) {
                    winW = document.documentElement.offsetWidth;
                }
                if (window.innerWidth) {
                    winW = window.innerWidth;
                }
				//если размер меньше, то будет задействован remoteCommand сверху под именем setSmallResolution()
                if( winW<width){
                    setSmallResolution();
                }
				//если размер больше, то будет задействован remoteCommand сверху под именем setBigResolution()
                else {
                    setBigResolution();               
                }
            }
            /* ]]> */
    
            //-->
        </script>

Оцените Статью: 1 2 3 4 5

Комментарии к этой статье:

Комментарий от: ChipAndDail
Дата: 14.10.2013

раньше для этого использовали hidden commandButton, спасибо за статью, это очень нужная информация!

Добавить ваш комментарий:

что бы оставить комментарий - пожалуйста зарегистрируйтесь! http://www.offrobot.com/join.php
Или введите Имя пользователя, если оно уже существует! http://www.offrobot.com/login.php

Пожалуйста ответьте на вопрос снизу (защита от автоботов)

(2+7)*4 =