Как показать персональное сообщение об ошибке / предупреждение / информация во всплывающем окне? - PullRequest
0 голосов
/ 21 февраля 2011

Здравствуйте! Я хочу показать всплывающее сообщение об ошибках или предупреждениях в моем приложении, например, если пользователь пытается войти в реестр, который уже находится в базе данных. Я работаю с JSF, и мое приложение не добавляет реестр, который уже находится в базе данных, но мне нужно показать сообщение, информирующее об этом пользователя. Спасибо.

Ответы [ 3 ]

1 голос
/ 13 марта 2015

Этот ответ специально для icefaces (так как я читал в комментариях, что @Mel работает с icefaces.

Чтобы открыть всплывающее окно в icefaces:

<ace:dialog widgetWar="mydialog">
    <h:outputText value="This is a dialog" />
</ace:dialog>

Затем вызовите это всплывающее окно в своем коде xhtml следующим образом: Например, я использую командную ссылку, которая при нажатии открывает всплывающее окно.

<h:commandLink onlick="mydialog.show()" action="#{myBean.doSomething()}" />

Чтобы показать сообщения в диалоговом окне:

<h:form id="myform">
<ace:dialog id="mydialog" widgetWar="mydialog">
    <h:panelGrid columns="1" width="100%">
        <ace:messages id="allMsgsAdd" initEffect="highlight" for="myform:mydialog" />
    </h:panelGrid>

    <h:outputText value="This is a dialog" />
</ace:dialog>
</h:form>

Затем вы можете использовать этот код для отправки сообщений на ace:message, который вы только что создали.

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(SEVERITY_INFO, "My Message", null));

Обратите внимание, что SEVERITY_INFO является определенной константой FacesMessage. Вам потребуетсячтобы импортировать его. В зависимости от того, нужно ли пользователю показывать предупреждение или ошибку, вы можете импортировать эти

import static javax.faces.application.FacesMessage.SEVERITY_ERROR;
import static javax.faces.application.FacesMessage.SEVERITY_INFO;

Также обратите внимание на первый параметр метода addMessage(). Вы заметите, что я передаю null в качестве первого параметра. См. здесь , и вы обнаружите, что первым параметром является идентификатор клиента, что в основном означает, что клиенту, которому вы хотите отправить это сообщение. Если clientId равен нулю, это FacesMessageпредполагается не быть связанным с каким-либо конкретным экземпляром компонента.Таким образом, все диалоги сообщений на вашей странице получат эту ошибку / предупреждение.Если вы хотите, чтобы ТОЛЬКО показывал сообщение в диалоговом окне, вам нужно передать свой идентификатор клиента диалога вот так:

FacesContext.getCurrentInstance().addMessage("myform:mydialog", new FacesMessage(SEVERITY_INFO, "My Message", null));
0 голосов
/ 21 февраля 2011

Проверьте мой ответ на другой вопрос, может быть, он будет вам полезен

Как получить модальное окно richfaces для отображения без события onclick?

Это покажет ваши сообщения об исключениях (или другое сообщение, добавленное вами в середине кода) в <rich:modalPanel>.

0 голосов
/ 21 февраля 2011

Вы можете попробовать использовать некоторые существующие библиотеки компонентов JSF с открытым исходным кодом. Многие из них уже предоставляют всплывающий пользовательский интерфейс.Например, Richfaces предоставляет его.Вы можете обратиться к этой официальной ссылке, чтобы увидеть, как использовать: http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_modalPanel.html

...