переход от javascript window.open к Rich: ModalPanel - PullRequest
0 голосов
/ 09 марта 2012

В моем веб-приложении в настоящее время есть много всплывающих окон, созданных с помощью различных функций JS, которые я хотел бы заменить на Rich: ModalPanel (я использую Myfaces 2.0.12 и RichFaces 3.3.3).Ниже приведен типичный пример, который я хотел бы заменить:

   window.open("<%=basePath1%>jsp/custhistory.faces?userid="+pk);

, где pk - это значение, повторяемое со скрытого ввода, такого как <h:inputHidden id="userPk" value="#{1234}"/>, внутри функции javascript, а затем добавляемое в конец URL выше,

Глядя на несколько примеров RichFaces ModalPanel (и демонстраций), я не могу понять, как я могу заставить вышеуказанное работать, используя ModalPanel.Может кто-нибудь привести пример или ссылку на ресурс o

1 Ответ

0 голосов
/ 14 марта 2012

Я использовал Richfaces 4, но должна применяться та же теория.

Модальная панель - это, по сути, div, который можно показать или скрыть, поэтому вы можете добавить туда <ui:include>, если вы специальнонужно (или хотите) чтобы панель была отдельным файлом.

Модальная панель отображается как часть вашей страницы, но, как мне кажется, имеет стиль display:none.Если это вызвано действием клиента, вы можете вызвать API-интерфейс Richfaces для отображения панели по команде.

Например, вместо команды (Link | Button), запускающей Richfaces.$('elName').show(), это может вызвать вашу функцию js, которая устанавливаети значения / параметры, которые нужны вашей модальной панели, а затем вызовите .show().

Примечание: IE и firefox имеют действительно модальное всплывающее окно.Это не совсем модально, и javascript будет обрабатываться в фоновом режиме, и если вы не выделите всплывающую панель, если пользователь вводит текст, который будет взаимодействовать с приложением в фоновом режиме.

Я использовал модальный jsвсплывающее окно с запросом пользователя с вопросом да / нет в его типе идиомы

if(askUser("some question?")=='yes'){
    //some code to do if yes
}else{
    //some code to do if no
}

В зависимости от того, насколько универсальным вы хотите это всплывающее окно, это на самом деле невозможно без использования запускаемого события и определения событияобработчик для этого события для обработки остальной части функции.

...