Skip to main content

ADF 11g Quicky 3 : Adding Error, Info and Warning messages

How can we add a message programatically ? Last week I got this question for the second time in a months time. I decided to write a short blogpost on how this works.

Adding messages is very easy, you just need to know how it works.
You can add a message to your faces context by creating a new FacesMessage. Set the severity (ERROR, WARNING, INFO or FATAL ), set the message text, and if nessecary a message detail. The fragment below shows the code for an ERROR message.

1:   public void setMessagesErr(ActionEvent actionEvent) {  
2: String msg = "This is a message";
3: AdfFacesContext adfFacesContext = null;
4: adfFacesContext = AdfFacesContext.getCurrentInstance();
5: FacesContext ctx = FacesContext.getCurrentInstance();
6: FacesMessage fm =
7: new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, "");
8: ctx.addMessage(null, fm);
9: }

I created a simple page with a couple of buttons to show the result of setting the message. When the button is pressed the message is shown.
1:  <?xml version='1.0' encoding='UTF-8'?>  
2: <jsp:root xmlns:jsp="" version="2.1"
3: xmlns:af=""
4: xmlns:f="">
5: <af:inputText label="Label 1" id="it1"></af:inputText>
6: <af:inputText label="Label 2" id="it2"
7: binding="#{pageFlowScope.msgsBean.showMessage}"></af:inputText>
8: <af:inputText label="Label 3" id="it3"></af:inputText>
9: <af:commandButton text="error" id="cb1"
10: actionListener="#{pageFlowScope.msgsBean.setMessagesErr}"/>
11: <af:commandButton text="info" id="cb2"
12: actionListener="#{pageFlowScope.msgsBean.setMessagesInf}"/>
13: <af:commandButton text="warn" id="cb3"
14: 15: actionListener="#{pageFlowScope.msgsBean.setMessagesFat}"/>
16: <af:commandButton text="warn for comp" id="cb4"
17: actionListener="#{pageFlowScope.msgsBean.setMessagesWrnForComp}"/>
18: </jsp:root>

A special case is the message that is directly related to a component. For that I use the button that calls the "setMessageForComp" method combined with an inputtext field that is bound to a bean : binding="#{pageFlowScope.msgsBean.showMessage}.
The code behind this button is slightly different from the one show in the java fragment earlier. The important part is that the message is specifically added to the component : getShowMessage().getClientId(ctx).

1:   public void setMessagesWrnForComp(ActionEvent actionEvent) {  
2: // Add event code here...c
3: String msg = "This is a message";
4: AdfFacesContext adfFacesContext = null;
5: adfFacesContext = AdfFacesContext.getCurrentInstance();
6: FacesContext ctx = FacesContext.getCurrentInstance();
7: FacesMessage fm =
8: new FacesMessage(FacesMessage.SEVERITY_WARN, msg, "");
9: ctx.addMessage(getShowMessage().getClientId(ctx), fm);
10: }
11: public void setShowMessage(RichInputText showMessage) {
12: this.showMessage = showMessage;
13: }
14: public RichInputText getShowMessage() {
15: return showMessage;
16: }
17: public void setMessagesWrnForComp(ActionEvent actionEvent) {
18: // Add event code here...c
19: String msg = "This is a message";
20: AdfFacesContext adfFacesContext = null;
21: adfFacesContext = AdfFacesContext.getCurrentInstance();
22: FacesContext ctx = FacesContext.getCurrentInstance();
23: FacesMessage fm =
24: new FacesMessage(FacesMessage.SEVERITY_WARN, msg, "");
25: ctx.addMessage(getShowMessage().getClientId(ctx), fm);
26: }
27: public void setShowMessage(RichInputText showMessage) {
28: this.showMessage = showMessage;
29: }
30: public RichInputText getShowMessage() {
31: return showMessage;
32: }

The code for this quicky can be downloaded here.


Mikeyoakes said…
Gret piece Luc - I needed to quickly find something for adding an In Context Error Message on the ADF BPM Task Flow screen I am working on and this helped greatly. Keep up the great work - it is appreciated.
Anonymous said…
Hello ,acer! I faced one problem in my project, can you help me ?
yeah, i create a popup and put one dialog in it. In the inspector panel
i set "Type" to none, that means the deafult ok button and cancel button
would not show, but after running my jspx page, i found that there exist
a line of blank, and it is obviously.That`s looks so bad, how can i figure
this? :)

Waiting for your answer, thanks & best regards!
My Email:

Popular posts from this blog

How to: Adding Speech to Oracle Digital Assistant; Talk to me Goose

At Oracle Code One in October, and also on DOAG in Nurnberg Germany in November I presented on how to go beyond your regular chatbot. This presentation contained a part on exposing your Oracle Digital Assistant over Alexa and also a part on face recognition. I finally found the time to blog about it. In this blogpost I will share details of the Alexa implementation in this solution.
Typically there are 3 area's of interest which I will explain. Webhook Code to enable communication between Alexa and Oracle Digital AssistantAlexaDigital Assistant (DA) Explaining the Webhook Code The overall setup contains of Alexa, a NodeJS webhook and an Oracle Digital Assistant.
The webhook code will be responsible for receiving and transforming the JSON payload from the Alexa request. The transformed will be sent to a webhook configured on Oracle DA. The DA will send its response back to the webhook, which will transform into a format that can be used by an Alexa device. To code exposes two REST …

How to use node-red to interact with twitter

Recently I had to setup an application that was able to read twitter and, based on some predefined keywords,  had to reply to specific tweets. I decided to have a look at node-red to set this stuff up. It proofed to be rather straightforward and easy to implement. The hardest part was to get approval for a twitter developer account. In this post I describe how I used node-red and how I implemented the interaction with twitter.
What is node-red, and how to use it? Node-RED  ( is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways. It provides a browser-based editor that makes it easy to wire together flows using the wide range of nodes in the palette that can be deployed to its runtime in a single-click.  You can use node-RED in many ways, but for the purpose of this demo I decided to run it in a docker image. I used the way described here (, as this is a no…