Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6530219
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T09:43:44+00:00 2026-05-25T09:43:44+00:00

I have written a custom component for jsf. The renderer extends com.sun.faces.renderkit.html_basic.ListboxRenderer. My component

  • 0

I have written a custom component for jsf. The renderer extends com.sun.faces.renderkit.html_basic.ListboxRenderer. My component is in “javax.faces.SelectMany”-Family.

The code in jsf-page looks like this:

<tb:myMenu id="testId" value="#{valueForm.someValue}">  
    <f:selectItem /> 
    <f:selectItems value="#{dao.getSomething()}"  />
    <f:ajax render=":myTestForm:myId"/>
</tb:myMenu>

How can i get the value of the render-attribute in my Renderer? I only need the value, there should nothing be written to my component (like RenderKitUtils-class does)

My current solution is shown below. It works, but i am not happy about it.

if (component instanceof ClientBehaviorHolder) {
        Map<String, List<ClientBehavior>> behaviors = ((ClientBehaviorHolder)component).getClientBehaviors();
        if (behaviors != null && behaviors.keySet().contains("valueChange")) {
            for (ClientBehavior cb: behaviors.get("valueChange")) {
                if (cb instanceof AjaxBehavior) {
                    System.out.println("AJAX: " + ((AjaxBehavior) cb).getRender());
                }
            }
        }
    }
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T09:43:44+00:00Added an answer on May 25, 2026 at 9:43 am

    How exactly are you not happy about it? Too verbose? Well, there’s indeed no utility method provided by JSF API nor by Mojarra impl which hides that away. It just stops here. You’ve to write it yourself.

    At least, in your snippet the 2nd if check on null is superfluous, because it never returns null. Further the behaviors.keySet().contains(key) on the same line can also be simplified to behaviors.containsKey(key). Given the fact that it never returns null, you could also just get the list of behaviors immediately and nullcheck it instead.

    Finally just hide it away in some utility method.

    public static Set<String> getClientBehaviorRenderIds(UIComponent component, String behaviorName) {
        Set<String> clientBehaviorRenderIds = new HashSet<String>();
    
        if (component instanceof ClientBehaviorHolder) {
            List<ClientBehavior> clientBehaviors = ((ClientBehaviorHolder) component).getClientBehaviors().get(behaviorName);
    
            if (clientBehaviors != null) {
                for (ClientBehavior clientBehavior : clientBehaviors) {
                    if (clientBehavior instanceof AjaxBehavior) {
                        clientBehaviorRenderIds.addAll(((AjaxBehavior) clientBehavior).getRender());
                    }
                }
            }
        }
    
        return clientBehaviorRenderIds;
    }
    

    so that you can use it as follows:

    Set<String> renderIds = getClientBehaviorRenderIds(component, "valueChange");
    // ...
    

    If it are the nested checks which is disturbing, you can also do the inverse checks (this is also how Mojarra is written in general; deep if nesting is indeed a poor practice):

    public static Set<String> getClientBehaviorRenderIds(UIComponent component, String behaviorName) {
        Set<String> clientBehaviorRenderIds = new HashSet<String>();
    
        if (!(component instanceof ClientBehaviorHolder)) {
            return clientBehaviorRenderIds;
        }
    
        List<ClientBehavior> clientBehaviors = ((ClientBehaviorHolder) component).getClientBehaviors().get(behaviorName);
    
        if (clientBehaviors == null) {
            return clientBehaviorRenderIds;
        }
    
        for (ClientBehavior clientBehavior : clientBehaviors) {
            if (clientBehavior instanceof AjaxBehavior) {
                clientBehaviorRenderIds.addAll(((AjaxBehavior) clientBehavior).getRender());
            }
        }
    
        return clientBehaviorRenderIds;
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have written a new custom component derived from TLabel. The component adds some
I have a Joomla website that I've written a custom shopping cart component for.
Hi I have a bit of a problem. I have written a custom component
I have a custom component written in ActionScript. It has constructor which is expecting
I have written a custom ErrorProvider which adds some functionality to the existing ErrorProvider
I have written a custom server control which (pseudo-code) looks like public class MyCustomCtrl
Let's say that I have written a custom e-mail management application for the company
I'm using nant to build our product and have written a custom task to
We have a custom written on-line job application... application. HR is requesting a skill
I have written a few MSBuild custom tasks that work well and are use

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.