hello thomas,

thank you for the detailed description!
this issue is solved in extval for jsf 1.2 -> if you have the possibility to
upgrade to jsf 1.2 + extval 1.2.x, you don't have this problem.

@extval for jsf 1.1: i created an issue [1]

regards,
gerhard

[1] http://issues.apache.org/jira/browse/EXTVAL-37



2009/2/27 <[email protected]>

>
> 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