Hello,

I'm sorry if this ends up in the wrong place, i'm new to this.
I encountered a problem as i tried to use extval together with facelets

extval 1.1.1
facelets 1.1.14

The Problem concerns the DefaultELHelper and a special case of EL usage in custom facelet tags.

I am using custom composition tags in facelets like shown in this IBM article by Richard Hightower:
http://www.ibm.com/developerworks/java/library/j-facelets/#N102EF

custom tag inside a facelet:

<my:customTag entity="#{viewBean}" fieldName="address" />

(the viewBean has an address property)


custom tag source:

<ui:composition>

        <h:selectOneMenu id="#{fieldName}_input" value="#{entity[fieldName]}" >
                <f:selectItem ... />
                ...
        </h:selectOneMenu>

</ui:composition>

Problem and StackTrace:

fieldName contains the String "address", which is what we want to be evaluated
so we cant put the '' around the fieldName

ValueBindingExpression = "#{entity[fieldName]}"

result value = "entity[address]"

=> no '' around address

code line 93:
int index1 = expression.lastIndexOf("']");

        expression does not contain '] but it contains ]
        therefore index1 and index2 are -1 and the else branch is executed
        which does not set base, so it remains null
        finally this leads to an exception

Daemon Thread [http-8080-2] (Suspended (breakpoint at line 93 in ValueBindingExpression))
        ValueBindingExpression.<init>(String) line: 93
        DefaultELHelper.getValueBindingExpression(UIComponent, boolean) line: 
104
        DefaultELHelper.getPropertyDetailsOfValueBinding(UIComponent) line: 138
        DefaultComponentMetaDataExtractor.extract(FacesContext, Object) line: 85
ValidationInterceptorWithSkipValidationSupport(ValidationInterceptor).initComponent(FacesContext, UIComponent) line: 74 ValidationInterceptorWithSkipValidationSupport(ValidationInterceptor).beforeEncodeBegin(FacesContext, UIComponent, Renderer) line: 53 ExtValGenericRendererWrapper(ExtValRendererWrapper).encodeBegin(FacesContext, UIComponent) line: 208 ExtValGenericRendererWrapper.intercept(Object, Method, Object[], MethodProxy) line: 71 HtmlMenuRenderer$$EnhancerByCGLIB$$ba4b3ba9.encodeBegin(FacesContext, UIComponent) line: not available
        HtmlSelectOneMenu(UIComponentBase).encodeBegin(FacesContext) line: 746
        ComponentSupport.encodeRecursive(FacesContext, UIComponent) line: 242
        ComponentSupport.encodeRecursive(FacesContext, UIComponent) line: 249
        ComponentSupport.encodeRecursive(FacesContext, UIComponent) line: 249
        FaceletViewHandler.renderView(FacesContext, UIViewRoot) line: 594
AjaxViewHandler(ViewHandlerWrapper).renderView(FacesContext, UIViewRoot) line: 101
        AjaxViewHandler.renderView(FacesContext, UIViewRoot) line: 222
        RenderResponseExecutor.execute(FacesContext) line: 41
        LifecycleImpl.render(FacesContext) line: 146
        FacesServlet.service(ServletRequest, ServletResponse) line: 147
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 290
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 
206
AuthorizationFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 97 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 
206
ExtensionsFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 246 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 
206
EncodingFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 22 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 
206
ExtensionsFilter(ExtensionsFilter).doFilter(ServletRequest, ServletResponse, FilterChain) line: 301 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 
206
        StandardWrapperValve.invoke(Request, Response) line: 233
        StandardContextValve.invoke(Request, Response) line: 191
        StandardHostValve.invoke(Request, Response) line: 128
        ErrorReportValve.invoke(Request, Response) line: 102
        StandardEngineValve.invoke(Request, Response) line: 109
        CoyoteAdapter.service(Request, Response) line: 286
        Http11AprProcessor.process(long) line: 857
        Http11AprProtocol$Http11ConnectionHandler.process(long) line: 565
        AprEndpoint$Worker.run() line: 1509
        Thread.run() line: 619

without extval this expression evaluates and works fine, so i guess this is a lack of facelets/EL support. please correct me if i am wrong, and feel free to kill me if this is not the right place to report such a problem.

kind regards,
thomas

Reply via email to