JSF component ID defined dynamically with EL

I would like to create dynamically the ID of a component (af:inputText by example)
with an EL (#{backing_bean.createID})
I have the following error:
How to define this ID dynamically ?
java.lang.IllegalArgumentException: Illegal id: _#{serviceOfferGroupLinkManagement.serviceOfferGroupManagement.name}_0_0     at oracle.adf.view.faces.component.UIXComponentBase._throwBadId(UIXComponentBase.java:1185)     at oracle.adf.view.faces.component.UIXComponentBase._validateId(UIXComponentBase.java:1177)     at oracle.adf.view.faces.component.UIXComponentBase.setId(UIXComponentBase.java:254)     at javax.faces.webapp.UIComponentTag.createComponent(UIComponentTag.java:1016)     at javax.faces.webapp.UIComponentTag.createChild(UIComponentTag.java:1036)     at javax.faces.webapp.UIComponentTag.findComponent(UIComponentTag.java:749)     at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:429)     at oracle.adf.view.faces.webapp.UIXComponentTag.doStartTag(UIXComponentTag.java:85)     at commercialofferjspx._jspService(_commercialoffer_jspx.java:621)     [commercialoffer.jspx]

Hello Frederic,
You cannot do that. It's strange though since I cannot find the constraint in the specification about it. The constraint exists on the core libraries but don't seem to be required for the html one.
Anyway, spec or not, I checked the source code and you cannot use EL with the id attribute.
EDIT: Nevermind, I found it in the spec (section 3.1.4). Parent and id attribute disallows value bindings. Thinking about it I can see why I think. Associating the id with a value binding would not garantee the stability of the id during a long period of time. This could lead to inconsistency when the JSF core would try to apply request values.
Sorry,
Simon Lessard
Message was edited by:
Simon Lessard

Similar Messages

  • How to load a class dynamically (via reflection) in a jsf-component

    Hi all,
    I am writing my own jsf component and I would like to do it generically. Therefore I have an attribute, where the developer can pass a fully qualified classname, which I want to use to instantiate. But I have a Problem with the classloaders, everytime I get a ClassNotFound-Exception during debugging.
    Does anybody know how it is possible, to to get the most parent classloader?
    Currently I am even not able to load a class, which is in the same package like all other compontent-classes.
    Thank you very much in advance
    Thomas

    Within web applications, I believe it is recommended to use Thread.getContextClassLoader(). Keep in mind that web applications require different classloader semantics than regular Java applications. The class loader which gets resources from the WAR is favored over others, even when this violates the normal class loading conventions.

  • Dynamic binding of jsf component to html on client side?

    Hi,
    I am developing a CRUD JSF page, which would allow user to create (add) rows of data (or delete/cancel the data added) without server hit. I am using some Javascript that would allow to create/delete inputs (right now simple html input text component) all on client side. However, I dont know how do I bind this data to JSF's inputText component. Also I would need to bind this data to an ArrayList of String. I am working on IRAD 7, so I guess that limits some of the open source JSF library, if they are available out there. I would appreciate any help.
    THanks.

    I think the standard JSF solution would be not to do the create/delete of inputs on the client side, but to do it on the server side.
    If that is not your cup of tea, I think that the standard components will not be sufficient. So you are looking at either not binding the inputs to a component and just getting the values via the request parameters or creating a custom component capable of dealing with this.

  • Custom JSF component with custom value datatype

    I've created a simple custom JSF component with a decode, encodeBegin as follows:
    public void decode(FacesContext context) {
        Map<String, String> requestParameters = context.getExternalContext().getRequestParameterMap();
        String clientId = getClientId(context);
        String value = requestParameters.get(clientId);
        setSubmittedValue(value);
        super.decode(context);
    public void encodeBegin(FacesContext context) throws IOException {
        ResponseWriter response = context.getResponseWriter();
        String clientId = getClientId(context);
        response.startElement("input", this);
        response.writeAttribute("name", clientId, "id");
        response.writeAttribute("type", "text", null);
        String value = (String) getValue();
        if (null != value) {
             response.writeAttribute("value", value, "value");
        response.endElement("input");
    }With also:
    setRendererType(null);as part of the constructor.
    This component works just fine both inside and outside of a dataTable component, as expected.
    What I would like to do now is to replace the String value datatype with a custom class, for example MyDataType. For this I do:
    public void decode(FacesContext context) {
        Map<String, String> requestParameters = context.getExternalContext().getRequestParameterMap();
        String clientId = getClientId(context);
        String value = requestParameters.get(clientId);
        MyDataType myData = (MyDataType) getValue();
        MyDataType newData = (MyDataType) myData.clone();
        newData.setValue(value);
        // copy old object and only update the changed field of this object
        setSubmittedValue(newData);
        super.decode(context);
    public void encodeBegin(FacesContext context) throws IOException {
        ResponseWriter response = context.getResponseWriter();
        String clientId = getClientId(context);
        response.startElement("input", this);
        response.writeAttribute("name", clientId, "id");
        response.writeAttribute("type", "text", null);
        MyDataType value = (MyDataType) getValue();
        if (null != value) {
             response.writeAttribute("value", value.getValue(), "value");
        response.endElement("input");
    }Now this works perfect outside of a dataTable component, but inside it fails to update the property on the BB.
    Are there somewhere examples on how to properly use custom datatypes as values for UIInput components? Also how to only partially update the value (like I do, I only want to update the value field of the MyDataType object)

    Even if I encode the entire MyDataType via hidden input elements and decode it again (i.e. not using a cloned getValue) it's still not working side a dataTable.
    Could it have to do something with me using Facelets?

  • GetStyle() of JSF component before render

    Hey guys,
    I'm hoping this is an easy one, here goes...
    For one reason or another, I need to modify the CSS of certain components in a JSF page before it is rendered to the browser. The JSF pages are going to be laid out in Netbeans 6.0 (beta right now) using mostly Woodstock components and will have the 'style' attribute filled in for each component. However, like I said, I want to modify the CSS style value of some components prior to rendering.
    Looking through the Javadocs for Woodstock (javadocs are included with plugin) I see that many components do indeed give you access to this attribute ('style'), com.sun.webui.jsf.component.Field.getStyle() returns "CSS style(s) to be applied to the outermost HTML element when this component is rendered" for example.
    I figured this would be straight forward enough and attempted to retrieve the style using the prerender() method. Unfortunately, getStyle() returned null. After playing around with it for a while, it appears as though the components do not get these properties set (by the Netbeans attribute) until DURING the renderResponse phase. I say this because I tried setStyle() during prerender() and my changes were ignored. I then went back to Netbeans and removed my 'suggested style', now my setStyle() call during prerender() holds showing that somewhere in the renderResponse phase (after prerender()) the style is being set if one is given.
    Obviously making any changes after prerender() [like in afterRenderResponse()] will not cut it.
    To sum up:
    Even as late in the lifecycle as prerender(), the CSS style attribute of a Woodstock component is not yet set (getStyle() returns null and setStyle() ends up being overwritten). Any suggestions on how to modify the style?
    Thanks in advance (and I hope this is an applicable forum),
    Sean

    Solved:
    Once I wrapped my head around the problem I found a much more elegant solution.
    What I wanted to do was relatively position page fragments but was having trouble as the Netbeans IDE positions components within fragments absolutely. To make my page dynamic I was taking the style="position: absolute" attribute out of the <div> tag that was holding the <jsp:directive-include>. The components within the fragments were then being positioned absolutely on the resulting page, ending up strewn all over the place. This led me off on the tangent to reposition the components when the page was called (original post above).
    The weekend did me well I suppose. I came up with the bright idea to CHANGE the style attribute on the <div> tag rather than remove it. Making the <div> component "position: relative" passed its positioning down the the containing components and now my fragments are displayed correctly while being dynamically repositionable.
    Hope this helps anyone coming across the same problem.

  • Creating a custom JSF Component

    Hi,
    I am trying to create a custom JSF Component. My ultimate goal is to pass a bean to my custom component and have the component render some HTML output based on the info contained in the bean. Before I attempt that I am trying to get a simple custom component to just work. This component is based on the tutorial found here: http://www.jsftutorials.net/components/index.html
    This tutorial just creates a component that outputs a <div> tag around the body contents of the custom component.
    To keep this short I have done the following items from the tutorial link above:
    1) I have created the tld file defining the tag class, name, uri and shortname
    2) I have also created the tag class called TickerTag.java along with the component class UITicker.java. These classes are straight copy-and-paste jobs from the tutorial link and compile fine.
    3)My faces-config.xml file has the proper component definition of
    <component>
    <component-type>ticker</component-type>
    <component-class>ticker.UITicker</component-class>
    </component>
    This was the easy part. The example then goes on to use the custom component in a JSP page. I managed to get the custom component to work in a JSP page BUT my problem is getting the custom component to work in an XHTML file.
    I thought all I had to do was define an xml namespace using the uri from my tld file like so:
    Note: My uri is www.fubar.com/tags and is defined in the tld file.
    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:t="http://myfaces.apache.org/tomahawk"
    xmlns:u="http://www.fubar.com/tags">
    I then try to use the tag like so <u:ticker> <f:verbatim>Hello JSF Component</f:verbatim></u:ticker>
    I am expecting the following output: <div>Hello JSF Component
    </div>
    but instead I get
    <u:ticker>Hello JSF Component</u:ticker>
    It seems the tag is not even processed. This is my first jump into custom components. I have done custom JSP tags in the past but I never tried to display them on an XHTML page.
    If you are wondering why I am using XHTML pages, this was setup a while back by a previous developer. Changing everything to a JSP would take a long time and probably break some stuff I am not aware of yet. As such the web.xml file of this JSF web app has the following:
    <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
    </context-param>
    So all *.jsf files are processed and sent to the corresponding .xhtml file.
    I have looked up creating custom components on google and every last example uses their newly created components in a jsp file. No XHTML uses so far.
    Below are my tld files and xhtml file if that helps:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    <taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>u</short-name>
    <uri>http://www.fubar.com/tags</uri>
    <tag>
    <name>ticker</name>
    <tag-class>ticker.TickerTag</tag-class>
    <body-content>JSP</body-content>
    </tag>
    </taglib>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:t="http://myfaces.apache.org/tomahawk"
    xmlns:u="http://www.fubar.com/tags">
    <html>
    <head>
    <title>Show Custom Component</title>
    </head>
    <body>
    <f:view>
    <u:ticker> <f:verbatim>Hello JSF Component</f:verbatim></u:ticker>
    </f:view>
    </body>
    </html>
    Any suggestions/help are much appreciated,
    Nick
    </div>

    Thanks Ray. I'll take a look at that site.
    I managed to figure out my problem. I never created a .taglib.xml file that reference the component I defined in the faces-config.xml file. Once I did that everything work perfectly.
    I managed to use this forum post as a guide.
    http://osdir.com/ml/java.facelets.user/2006-12/msg00042.html
    I hope this helps anyone else.
    Nick

  • How can I include a javaScript files from within jsf component

    Is there any way using which I can include javascript files from my jsf component. Because otherwise I have to write all the javascript commands using writer.write which is very tedious rather than this I just want to include the javascript file which contains all the functions required. Also I want that this file should be included only once irrespective of the number of components included.
    Thanx in advance

    This doesn't depend on JSF. You need to include a script tag, like:
    <script src="/path/script.js"
    language="JavaScript" type="text/javascript"></script>
    If you want to include this only once, make a file included into every page, into which you can put other resources to be included along with this script.
    HTH,
    rs.

  • How to make Javascript access standard JSF component

    Hello all,
    I'm in need of a proper javascript code that access standard jsf component.
    Like we do for html tags;
    if( el.tagName.toLowerCase() != 'select')
    I need to do the same thing for a jsf tag i.e; <h:selectOneMenu>. How to make javascript access <h:selectOneMenu> like it does with <select> tag ? Please let me know asap. Extremely sorry if the question is kind of stupid....cause I'm a beginner for JSF environment.
    Any sort of help, suggestion or advice would highly be appreciated.
    Thanks in advance.

    Ummmm, I may be off the beaten path, but by the time your javascript is called the h:selectOneMenu would be a select tag within the dom. You should be able to reference that tag as you normally would.

  • Simple JSF component

    Im using a simple JSF component <h:selectOneMenu> decribed below:
    <h:selectOneMenu value = "Tuesday">
         <f:selectItem itemValue="Sunday" />
         <f:selectItem itemValue="Monday" />
         <f:selectItem itemValue="Tuesday" />
         <f:selectItem itemValue="Wednesday" />
         <f:selectItem itemValue="Thursday" />
    </h:selectOneMenu>I use this component in a simple .jsp with nothing else in it. Im tring test the waters. My development environment is WSAD 5.1. When I try to run the .jsp on my test server, I get the following error: (Any idea as to why?)
    [6/21/05 17:11:17:891 EDT]  bc09ee3 WebGroup      I SRVE0180I: [FACES_Test] [/FACES_Test] [Servlet.LOG]: /JSFTestApp.jsp: init
    [6/21/05 17:11:17:953 EDT]  bc09ee3 WebGroup      E SRVE0026E: [Servlet Error]-[Argument Error: One or more parameters are null.]: javax.servlet.jsp.JspException: Argument Error: One or more parameters are null.
         at com.sun.faces.taglib.html_basic.SelectOneMenuTag.doEndTag(SelectOneMenuTag.java:483)
         at org.apache.jsp._JSFTestApp._jspService(_JSFTestApp.java:342)
         at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
    .........

    OK, I figured this out. I made a newbie mistake. I should be using the itemLabel attribute like this <f:selectOneMenu itemLabel = "Sunday" itemValue = "Sunday">
    I think.....

  • JSF component to create an html table-like display

    Jdev 11.1.1.4
    I would like to know what is the preferred jsf component to create a display as an HTML table.
    My display needs to have a "column-table-header" and "row table header". It is composed of several rows and columns. In every cell I need to insert a different inputText mapped to different VO attributes. I have a lot of VO attributes.....(one per cell). Something as an MS-Excel crosstab table.
    I'm currently using an actual html table but I'm having some problems when the contents are adjusted inside a panel box (sometimes the right side of the table gets out of the panel box). I'm also having trouble with toolltip help text (shortdesc property) that sometimes doesn't display exactly where the input fileds are located and the shadow of this tooltip apears incorrectly overlapped with its content (in fact the tooltip apperars in one place and it shadow in a different place of the screen as a grey rectangle.
    I don't know if all this strange behaviours could be caused because of the use of html tables.

    Hi,
    I don't know if all this strange behaviours could be caused because of the use of html tables.quote from timo
    Using html is not encouraged in ADF. Try the Trinidad take component. trh:tableLayout is wrapper around html tables, you can use it in adf without harm,,
    try using trinidad table layout instead of core html.
    Regards,
    Edited by: Santosh Vaza on Jul 30, 2012 12:33 PM

  • How to raise a self-defined event with parameters in program

    Hi,all,
    I want to raise a self-defined event with parameters in one of my method ,how to do that?Thanks

    Hi Ray,
    If your event name is MYEVENT and the parameter name is MYPARA and the value you want to pass to this parameter is L_PARAVALUE, use the following -
    wd_this->fire_myevent_evt( mypara = l_paravalue ).
    If the event is to be raised in an a view, then you need to get the component controller instance first and use it instead of wd_this.
    Also, this can be obtained directly by clicking on the WD Code Wizard ->Radio button for raise event->selecting your event.
    Regards,
    Neha
    <i><b>PS:Reward if helpful</b></i>

  • Custom JSF Component tags ignored after converting to Facelets layout

    I am currently using JDeveloper 10.1.3.3.
    I have a project consisting of .jspx pages. These pages mainly use components from ADF faces core. I also created my own custom JSF component that I use in several of these pages.
    Then, I needed to use Facelets so that I could apply a standard layout to all my .jspx pages. I looked at all the tutorials, and I created a layout.xhtml for my .jspx pages to use. This worked great for my .jspx pages that don't have my custom JSF component.
    Now, when I run my page with my custom component <img:newimage ...etc >
    the tag is ignored and it appears in the page's source as is when it should render as <img.src=...etc>. Attributes of newimage are changed on the page appropriately like width and height, but my component's tag, component, and servlet java files are never accessed.
    How can I fix this? Please help!
    Thanks.

    Hi,
    did you post this issue to the Facelets open source site ? Sounds like an issue with using Facelets
    Frank

  • DataGrid dynamically with a Repeater

    Hello,
    I would like to create a DataGrid component that is created
    dynamically with the help of a Repeater array.
    I gave up my first approach using directly a
    <mx:Repeater> tag within the DataGridColumns:
    Code:
    <mx:DataGrid ..>
    <mx:columns>
    <mx:Repeater id="rp" datProv="{data}"...>
    <mx:DataGridColumn dataField="{rp.currentItem.dataField}"
    .... />
    </mx:Repeater>
    </mx:columns>
    </mx:DataGrid>
    This kind of recurive structure isn't allowed.
    then I tried to resolve my problem by using an ActionScript
    generator, but because of a lack of example code, I don't know
    what's wrong with it:
    Code:
    <mx:DataGrid xmlns:mx="
    http://www.adobe.com/2006/mxml"
    columns="{repeaterArray}" initialize="initApp()"...>
    <mx:Script>
    <![CDATA[
    import mx.controls.dataGridClasses.DataGridColumn;
    public function initApp():void {
    repeaterArray = new Array();
    for (var c:Number = 0;c < ids.length;c++) {
    var newObj:DataGridColumn = new DataGridColumn(null);
    newObj.dataField = String(ids[c]);
    newObj.headerText = String(headers[c]);
    newObj.width = Number(widths[c]);
    repeaterArray.push(newObj);
    ]]></mx:Script>
    </mx:DataGrid>
    ids, headers, width are passed arrays with needed Strings,
    bzw. Numbers. It doesn't work although there is neither an compiler
    nor a debug error.
    I also dunno if I should use the initialize or
    creationComplete - event or another one?
    Does anybody know how I use the Repeater in this case
    correctly or build a working ActionScript generator?
    Thank you.

    I just forgot:
    this.columns = repeaterArray;
    Jesus Christ.

  • How to close a pop up window of used component ( usage defined )

    Hi Friends ,
    I'm calling a window as a pop up of used component ( Usage defined ). I want to close that pop up using a button on the embedded view of that window.
    it would be great help If any one can help me in this.
    Regards,
    Laeeq

    >
    Laeeq Siddique wrote:
    > Hi Silke ,
    >
    > I Want to close a pop up using a botton on embedded view of window of used component and I do not have the refrence of window object there. I know what you are talking about but its not that simple.
    >
    > Regards,
    > Laeeq
    Actually it is pretty simple.  From the embedded view you can use the APIs to get access to the hosting window object.
    data l_api_v_new_attachment type ref to if_wd_view_controller.
      l_api_v_new_attachment = wd_this->wd_get_api( ).
      data window_controller type ref to if_wd_window_controller.
      window_controller = l_api_v_new_attachment->get_embedding_window_ctlr( ).
      data window type ref to if_wd_window.
      window = window_controller->get_window( ).
      window->close( ).

  • What HDMI to Component converter will work with the current generation Apple TV3?

    What HDMI to Component converter will work with the current generation Apple TV3?

    http://www.hdfury.com/products/hdfuryiii-specs/

Maybe you are looking for