Win a copy of Svelte and Sapper in Action this week in the JavaScript forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
  • Campbell Ritchie
  • Ron McLeod
  • Paul Clapham
  • Bear Bibeault
  • Junilu Lacar
  • Jeanne Boyarsky
  • Tim Cooke
  • Henry Wong
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • salvin francis
  • Frits Walraven
  • Scott Selikoff
  • Piet Souris
  • Carey Brown

access ui components in custom valuechangelistener

Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi, working with jsf 1.2 n am trying to dynamically construct a group of radiobuttongroups inside an htmlgrid - so my valuechangelistener is not specified in the jsp component. my code is below

firstly i have a custom listener which I initialize as -
CustomRadioButtonValueChangeListener listener = new CustomRadioButtonValueChangeListener();

then, my java bean code has -

for(Declarations decl : (List<Declarations>)declarationsList){
Label label = new Label();
label.setId(decl.getCode() + "label");

RadioButtonGroup rbg = getRadioButtonGroup();

TextArea tArea = new TextArea();
tArea.setId(decl.getCode() + "TextArea");

Now, what I want to do is, on click of a radio button, I want to enable/disable the corersponding textarea's.

In the custom listener I'm unable to get hold of the TextArea object that I want to control.
I tried FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(event.getComponent().getId + "TextArea"); //this should translate to "Declaration1TextArea" for the first radio button group and so on....

Can anyone help or give ideas on how to access the UI Components in this listener class.

Saloon Keeper
Posts: 22498
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Any time you resort to javax.faces classes for anything other than datamodels, there's a strong possibility you're doing things the hard way.

I'm going to assume that you want partial page updating where the radio button enables/disables the textarea without actually re-rendering the entire page.

To do that, however, you need AJAX, since the default (non-AJAX) behavior is that the entire form would be submitted and the entire page would be redrawn. Plus, to make a radio button submit at all, it has to have attached JavaScript code, since a radio button isn't a submit button.

Which AJAX framework you use it up to you. Here's how it would look in RichFaces, however (more or less).

The client-side code looks like this:

Note the complete absence of JSF-specific code. It's all done with POJO stuff.

Note also, however, that this particular example doesn't do the full enable/disable, but that's because of UI concerns. A Radio button isn't a boolean control, so you can't click-on/click-off. For that you should use a checkbox. You can have 2 radio buttons and enable/disable based on which one of them is clicked, however.
    Bookmark Topic Watch Topic
  • New Topic