Expression Language - Beyond binding (mini-tutorial)

Expression Language - Beyond binding (mini-tutorial)
Creator has a binding logic that is very easy to use. You right click on a component and choose which properties to bind onto your backing beans. Then you manipulate the backing bean property to change the bound property of your component. Or users input information into your app and the component writes through that input to your backing bean. It's cool.
But sometimes you find yourself binding things to other things and you wonder if this is the simplest way to do things. A classic example is the old "how do I highlight a row of this table based on some datafield?" question. This has been answered by Tor Norbyte and the method works but to me it looks a little disjointed and clumsy.
The classic solution involves binding your tableColumn's style property to a String type bean. Then inside the bean you write the logic that selectively returns a "background-color:'yellow'" string or something similar (Tor used css). The problem is that within the bean you still need to figure out what is the current row of your table. To do this you need to invoke and EL expression from the Java code which, if you were trying to avoid EL, is circular logic. Worse still, imagine you want to color columns separately.
Here's an alternative solution using only Expression Language. It's self contained, easy to debug and maintain and once you've taken a look at it is pretty simple.
Here's the JSP tag that does this:
<ui:tableColumn binding="#{myHomePage.tableColumn7}"
headerText="Expired" id="tableColumn7" 
style="#{currentRow.value['expired']>0?'background-color: red':''}">To make it work I had to manually type the expression in the JSP file. The property editor will work with some EL statements but not all. Sometimes it mangles your EL expression and this can take a bit of debugging. <tip>Use the JSP editor...</tip>
The bit I had to manually type is this:
style="#{currentRow.value['expired']>0?'background-color: red':''}"All it does is check if some field in my TableRowGroup called 'expired' is greater than zero and if so highlight the cell. The construction is #{[condition]?[true value]:[false value]}
You can also mix text and expressions in an EL expression:
<ui:staticText ....  text="#{SessionBean1.userName}'s Home Page"/>If "Milo" is logged in he'll see "Milo's Home Page" where I placed this static text component.
Here's an example I've got that's part of a Button tag in my JSP:
visible="#{currentRow.value['d2.ReplacedBy']!=null}"In this case I don't want users pressing the button if the field is null, so I hide it for rows where the field is null.
Bean or EL?
Well strictly speaking it's not either or! In order for a Bean to be bound to a component you need an EL expression! So the question is do you implement you logic in a bean or an EL? Well that's pretty easy -- if the logic is simple and can be expressed in one line then use an EL only. Advantages: less dependencies and Bean properties floating around. If the logic is more complex use a backing bean and simple binding.
More to explore
Tor's blog entry:
http://blogs.sun.com/roller/page/tor/20050113#creator_how_to_highlight_specific
Winston's Blog entry
http://blogs.sun.com/roller/page/winston?entry=setting_table_column_style
[How do I add row numbers to a table?]
http://forum.sun.com/jive/thread.jspa?threadID=112916&tstart=0
[How do I use EL to bind to an Object's public property or field?]
http://forum.sun.com/jive/thread.jspa?threadID=112434&tstart=0
Addendum 1-Dec-06 Highlighting every 2nd row in a table
The above thread on how to add row numbers to a table also exposes a pretty simple method to highlight every nth row in a table (a fairly common request)
Something like this should work:
<ui:tableColumn ...... style="#{currentRow.tableRow.rowId%2==1?'background-color: yellow':''}">Message was edited by:
yossarian

Hi Yossarian,
Thanks for posting the simple but elegant solution. I liked the solution.
To make it work I had to manually type the expression in the JSP file.
The property editor will work with some EL statements but not all.
Sometimes it mangles your EL expression and this can take a bit of
debugging.Please file a bug against this at
http://www.netbeans.org./community/issues.html
Use visualweb as the sub category.
Thanks
- Winston
http://blogs.sun.com/winston

Similar Messages

  • JDeveloper ADF Faces Problem: Expression language

    Error(): Expression Language not supported in compile time attribute test
    I have followed an ADF Faces example from the Oracle Website. Concerning a database + ADF Faces
    http://www.oracle.com/technology/pub/articles/cioroianu_jsfadf_v4.html
    I followed the tutorial correct but everytime i try to run it. I get following error:
    Error(): Expression Language not supported in compile time attribute test
    It has something to do with following line of code
    <c:if test="${subscriber == null || !subscriber.loggedIn}">
    The error appears on every page where "<c:" appears.
    I have imported the right class library
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    Does anybody have any idea what i can do?

    Dear Tim,
    What a chance!!! I've got the same problem as you?!
    I've tried almost everything, but still haven't succeeded to solve it!
    Hopefully someone can help us.
    Greetings

  • Text/expression-language-based paradigma continues?

    i've been working with jsp and struts for a while. the most significant drawback of jsp, custom tags/jstl and struts is its "runtime" binding caused by the heavy use of string-attributes and interpreted expressions.
    it makes the coding itself harder (loss of compiler support and strong typing), it increases the amount of testing (automated tests, regression tests) extremely, it makes jsp-apps very hard to mantain, it is error-prone when changed or refactored, it is slower in execution and last but not james requires extra developement tools (such as struts-editors) to effectively maintain the applications.
    but i like the paradigma of a web application that keeps a view state, handles "events" etc.
    the only thing i can't understand is why jsf builds on the error-prone jsp/custom tag paradigma instead of compiled server side ui components. it obviuosly still tries to follow the myth, that web-designers and application developers can share their source (i.e. js-pages) by using tags. imo this is a degeneration of the good idea to leverage html by some custom tags. these tags empower designers to make their pages dynamic. (enterprise) software developement ist very different: complex use cases, business logic and often ui-"logic", integration issues etc...
    the life cycle of a jsp with custom tags is weird (even more in struts):
    - objects (variables in scriptlets) already existing in the scope of the jsp-execute-method are wrapped into attributes of page, request or application scope.
    - tags are defined using string-based attributs, such as <html:write name="pinky" property="brain" />
    - the implementation of the tag tries to look up the object in any of the scopes, starting with page scope
    - if the object exists, it tries to read/set its property via reflection
    so you lose strong typing, compile time checks and performance.
    there are several frameworks that do not build upon jsp and tags but put in an extra layer. this layer is similar to a rich client "form" and renders the output into html or any other format.
    so i'm not preferring any framework, just looking around and curious why this architecture has been chosen for jsf.
    thanks
    tom

    the most significant drawback of jsp, custom tags/jstl and struts is its "runtime" binding
    caused by the heavy use of string-attributes and interpreted expressions.I second this heartily.
    but i like the paradigma of a web application that keeps a view state, handles "events" etc.
    the only thing i can't understand is why jsf builds on the error-prone jsp/custom tag
    paradigma instead of compiled server side ui components. The JSF - JSP connection is a major problem. More and more developers are starting to express reservations about it, because the two technologies don't play well together. But I think you've hit on an even deeper fundamental flaw in the equation -- the evils of runtime binding. The heavy JSF/JSP reliance on runtime evaluation is a reliability nightmare. Developers choose Java, in part, because of the robustness provided by compile-time checking. We give that up when it comes to JSF/JSP or Struts web applications, and that's an unacceptable state of affairs.
    Winer says that "JSF has taken a major step in the right direction with the <managed-bean> and <referenced-bean> configuration elements. These give some hope for development tools to finally provide real code insight (and even error reporting) for EL expressions, because they define both what keys are used in the expression language and what types of objects may be at those keys." However, this will help with only the simplest EL expressions. As soon as an EL expression reaches into nested properties and maps that aren't defined in the config file, we're back to runtime binding and error reporting. The addition of generics to the language with 1.5 might have made it possible to introduce strong EL type checking at page compile time, but Sun's short-sighted type-erasure implementation of generics rules this out permanently.
    Look at what Microsoft is doing with ASP.NET. It's not perfect, but the fundamental technology is based on compiled server side ui components. There are places in that framework where you can write expressions aren't evaluated until runtime, but it's certainly not the fundamental basis of the model as it is with JSF/JSP. And the .NET implementation of generics may make it possible to have these dynamic expressions type-checked at page compile time in a future implementation of .NET.
    I keep reading comments from the JSF proponents who say things to the effect of "yes, we know JSP doesn't play well with JSF, but JSF allows you to plug in a different rendering technology." Well, we need one, and we need it urgently. ASP.NET has been out for two years now, and was far more polished and useable at its release than JSF is now after a very long development cycle.
    Rightly or wrongly, people will judge JSF on the merits of the reference implementation. And I fear that a lot of developers are going to throw up their hands after a taste of the JSF/JSP world and move to .NET.
    Stephen Schaub

  • A tricky way to twick ValueBinding language to bind a method call

    Here is the scenario:
    I'd like component can bind value to method call(with parameters) to a java instance, of course including backingBean.
    I wish this solution would be useful, especially when you are working in iteration component such as ForEach, TreeView or DataTable, EL ValueBinging language might be too restricted to complex expression. This way, you can pass iteration items as parameters into a method can and return a value to you page by valuebinding language
    In JSP:
        <h:outputText value="#{Page1.callHelper[Page1]['targetMethod']['James'][Page1.callEnd]}"/>In PageBean:
         public String targetMethod(String name){
             return "Hello, " + name +"!";
        private CallHelper callHelper = new CallHelper();
         public CallHelper getCallHelper() {
              return callHelper;
         public void setCallHelper(CallHelper callHelper) {
              this.callHelper = callHelper;
         private CallEnd callEnd = new CallEnd();
         public CallEnd getCallEnd() {
              return callEnd;
         public void setCallEnd(CallEnd callEnd) {
              this.callEnd = callEnd;
         }Util classes:
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    public class CallHelper extends LinkedHashMap {
         private CallHelper parent;
         public Object get(Object key){
              if(key instanceof CallEnd)return getRoot().methodCall();
              else{
                   Object value = super.get(key);          
                   if(value == null){
                        value = new CallHelper();
                        put(key, value);
                        ((CallHelper)value).parent = this;
                   return value;
         public boolean containsKey(Object key){
              return true;
         public boolean realContainsKey(Object key){
              return super.containsKey(key);
        protected CallHelper getRoot(){
             CallHelper root = this;
             if(root.parent==null)return root;
             else return root.parent.getRoot();
         protected Object methodCall(){
              Object result = null;
             List callParameters = new ArrayList(2);
             listCallParameters(callParameters, this);
             if(callParameters.size()>1){
                  Object instance = callParameters.get(0);
                  String methodName = callParameters.get(1).toString();
                  List methodParameters = new ArrayList();
                  for(int i=2; i<callParameters.size(); i++){
                       methodParameters.add(callParameters.get(i));
                  Method method = findMethod(instance, methodName, methodParameters);
                  if(method != null){
                       try {
                             result = method.invoke(instance, methodParameters.toArray());
                        } catch (IllegalArgumentException e) {
                        } catch (IllegalAccessException e) {
                        } catch (InvocationTargetException e) {
              this.clear();
              return result;
         private void listCallParameters(List list, Map map){
              if(map==null || !map.keySet().iterator().hasNext())return;
              Object key = map.keySet().iterator().next();
              if(key instanceof CallEnd)return;
              list.add(key);
              listCallParameters(list, (Map)map.get(key));
         private Method findMethod(Object instance, String methodName, List parameters){
              Method result = null;
              Method[] methods = instance.getClass().getMethods();
              for(int i=0; i<methods.length; i++){
                   if(methods.getName().equals(methodName)){
                        System.out.println(methodName);
                        Class[] paraClasses = methods[i].getParameterTypes();
                        if(paraClasses.length==parameters.size()){
                             boolean match = true;
                             for(int j=0; j<paraClasses.length; j++){
                                  if(parameters.get(j)!=null && !paraClasses[j].isInstance(parameters.get(j))){
                                       match = false;
                                       break;
                             if(match){
                                  result = methods[i];
                                  break;
              return result;
    public class CallEnd {
    Improvement:
    Anyone can make it thread safety and bind callhelper and callend directly to FacesContext properties rather than each backingBean.
    Have fun!
    And feel free to contect me at:
    [email protected]
    [email protected]

    You must seperate your parameter preparing and action method calling for sure.
    It depends on what kind of parameters you need to pass in:
    1. If action method is bound to several buttons, and it just wants to know which button was clicked, you can set actionListener to prepare it for you. Because the event includes the information you need.
    2. For other kinds of parameters, you can use ValueBinding Language to bind parameter values to backingBean, then the action method(without parameters) can pick parameters up from backingBean.

  • JSP 2.0 Expression Language

    Quick question on EL:
    - I noticed in the J2EE 1.4 Tutorial that the Expression Language syntax can be used outside of any JSP tag, for example
    ${name.lastname}is valid, even if used anywhere in the page, i.e. outside of any tag.
    Is this a new feature of JSP2.0, or is this possible using JSTL with prior versions of JSP?
    Thanks, Kevin

    JSP 2.0

  • Need Help on Express Language

    Can Anybody please help me out how express language works and if possible with examples.
    Thanks for your help.
    Gajendra Nagapurkar
    [email protected]

    the reference guide has a full tutorial on the language. if you know xml and any programming language, you should have no trouble learning it.
    Dana Reed
    AegisUSA
    Denver, Co
    773.412.3782

  • Rowset selectItems Expression Language

    page1.rowset.selectItems['BLAH','BLAH2'] is used quite a bit in the databinding expression language stuff. I can't seem to find a method anywhere that supports this. So, is it simply a part of the expression language? Does it return a SelectItem[] object?
    LES

    I have the same question. I recently did the database tutorial for the Java Studio Creator and then cloned what I learned to some of my own tables. I cannot find any documentation on the
    rowset.selectItems[ ] attribute?
    I would like to be able to have more than one database field populated in the drop down list as one field is not descriptive enough.
    I want to do something like this:
    page1.rowset.selectItems['value_field' , 'display_field1+" "+display_field2+" "+display_field3']
    Also, where is the XML that is used in the JSP's created by the Studio Creator defined.
    Thanks in advance for any help.
    Brian

  • Help needed in JSP Expression Language

    Hi all,
    I have been working for JSP Expression Language Sample execution since past 5 days. I am using the application server as "Jboss Server" and web server as "Tomcat".
    I have been included the jsp-api.jar file in my lib directory of application server as well as source folder's lib directory.
    When i am trying to build the source code, i am getting this build error.
    [javac] D:\eclipse\workspace\esolvProject\development\src\com\esolv\taglibs\
    web\classes\SetSupport.java:186: cannot resolve symbol
    [javac] symbol : method getExpressionEvaluator ()
    [javac] location: class javax.servlet.jsp.PageContext
    [javac] ExpressionEvaluator evaluator = pageContext.getExpressionEvaluator();
    In my jsp-api.jar , there are two classes called,
    PageContext and JspContext, Both are abstract classes.
    PageContext inherits JspContext class. JspContext class have the method getExpressionEvaluator() , returns ExpressionEvaluator.
    PageContextImpl - class . it has been called internally when we are trying to call PageContext class. In PageContextImpl class, there is one comment before, the method's definition. that is
    " Since JSP 2.0 "
    But we have the JSP 2.0 version. But it won't work.
    Please help me ont this.
    Thanks in Advance,
    Natraj

    >
    If the pblm was due to setting the classpath.
    The error should be showed for all files in the jar
    file.
    why i am getting the error for particular method ?
    it is accessing the other methods of same class
    'JspContext' . but it is not accessing that method.
    Thats my question.
    Just check that your .jar file is 2.0 compliant and that you do not have any other jars(for servlet or jsp api) in the classpath.
    Probably you have an older version of .jar file in your path. So the errors will appear only for those methods that have been added since 2.0, all other methods would compile fine.
    Please tell me the jar files to work out the
    expression language. so that i can cross check my
    list of jars.Hmmm...I dont use jboss. In tomcat the jar file name is jsp-api.jar. But it would have been the same even for jsp1.1, going by jar file names wouldnt help. Just look at your cp as if with a microscope to identify redundant jars.
    cheers,
    ram.

  • {Expression Language} not working tomcat5 j2se 1.5_beta

    I m new to JSP technology. I m trying to use expression language in my application and it's not letting me do the job.
    simple program
    <head> <body>
    Hi there! 3 + 3 is ${3+3}
    </body></head>
    It just shows " Hi there! 3 + 3 is ${3+3} " as the output. I tried google search. it seems the problem is across many networks like in bea weblogic etc.,
    when i used <%@page isELEnabled="true" > i get an error saying attribute isELEnabled not recognised or something like that. My web.xml hasn't got any setting for jsp so I don't know where the "*.jsp" section is available, just in case that needs any touchup.
    I have installed JSTL under /common/lib dir. but i think this library is not required for using basic EL.
    So, can anyone help me configure my JSP page so that i can use EL tags in them.
    OS: Windows 2000
    Tomcat ver: 5
    J2Se: 1.5 beta

    Hmmm. Looks like I didn't make myself clear enough.
    You still have the declaration DTD for servlet 2.3 at the top of your web.xml.
    To enable EL using Tomcat 5 you only need to do ONE of the following:
    1 - update your web.xml file to have the header for the 2.4 version (note its not a DTD anymore)
    2 - if your web.xml uses the DTD from version 2.3, include the page directive <%@ page isELIgnored="false" %> on any pages
    Basically the rules for executing EL are as follows:
    1 - Is there a directive on the page? If yes, then enable/disable according to the directive.
    2 - Is there an entry in web.xml for handling EL? If yes then enable/disable according to the setting
    3 - Is the web.xml file for the Servlet 2.4 spec? (ie does it start have the version 2.4 header) Yes = enable EL No = disable EL
    The easiest way of enabling EL is updating your web.xml to be compliant with the latest servlet spec.
    Cheers,
    evnafets

  • Unified Expression language framework in another context than JSP/JSF

    Hi
    +(I hope this is the right place for such question)+
    We are building some RCP apps and we are in need, for our frameworks, of a expression language that allows to get and set values, and other things, and it seems that the Unified Expression Language Framework meets our need.
    However, as I said, this is a RCP app, not a web app. So my question is
    Is this framework designed to be used outside of the web app context (jsp, jsf, etc) ? Or is there any dependencies that would prevent or make it difficult to use it in a GUI RCP application?
    Thanks for your help
    cd

    BalusC wrote:
    It's so cool that you can change the way to read your sentence. I never read it any other way. I probably shouldn't have posted a double meaning statement but saying that I'm changing the way I read it is incorrect. I'm not doing that.
    BalusC wrote:
    It's also a great coincidence that you mention exactly the references which are implicitly available in the scriptlet world.Not sure what that's intended to mean. I was exposing to the OP the part of EL that deals with objects that require/assume a j2ee container.

  • BUG:  Expression Language not supported (JDeveloper 10.1.3.0.4(SU1))

    Hi!
    I have the following code in a jspx page:
    <c:if test="${!empty bean.genericErrorMessages}">
    <h:outputText styleClass="texto_red"
    value="#{bean.genericErrorMessages}"
    id="applicationErrorMessages" escape="false"/>
    </c:if>
    All code compile well, but when i run the jspx page the following exception occur.
    The problem is that in JDeveloper Early Access 3 the problem doesn't occur.
    But in the Jdeveloper version 10.1.3.0.4(SU1) the exception occur.
    I'm running JDeveloper in a Windows XP SP2, JSF 1.1_01 and JSTL 1.0
    Does anyone know a solution to this problem? Tanks.
    The Exception:
    Error: Expression Language not supported in compile time attribute test
         at oracle.jsp.parse.JspUtils.hasELWithCreation(JspUtils.java:1248)
         at oracle.jsp.parse.JspUtils.processELAttribute(JspUtils.java:1274)
         at oracle.jsp.parse.OpenJspTagHandler.processAttributeValue(OpenJspTagHandler.java:331)
         at oracle.jsp.parse.JspParseTag.parseXMLSrc(JspParseTag.java:1368)
         at oracle.jsp.parse.JspParseTag.parse(JspParseTag.java:1413)
         at oracle.jsp.parse.OpenJspTagHandler.parse(OpenJspTagHandler.java:802)
         at oracle.jsp.parse.JspParseTag.genXMLSrcTag(JspParseTag.java:867)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcNextTag(JspParseTag.java:745)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcBody(JspParseTag.java:1121)
         at oracle.jsp.parse.OpenJspTagHandler.parseXMLSrcBody(OpenJspTagHandler.java:739)
         at oracle.jsp.parse.JspParseTag.parseXMLSrc(JspParseTag.java:1375)
         at oracle.jsp.parse.JspParseTag.parse(JspParseTag.java:1413)
         at oracle.jsp.parse.OpenJspTagHandler.parse(OpenJspTagHandler.java:802)
         at oracle.jsp.parse.JspParseTag.genXMLSrcTag(JspParseTag.java:867)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcNextTag(JspParseTag.java:745)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcBody(JspParseTag.java:1121)
         at oracle.jsp.parse.OpenJspTagHandler.parseXMLSrcBody(OpenJspTagHandler.java:739)
         at oracle.jsp.parse.JspParseTag.parseXMLSrc(JspParseTag.java:1375)
         at oracle.jsp.parse.JspParseTag.parse(JspParseTag.java:1413)
         at oracle.jsp.parse.OpenJspTagHandler.parse(OpenJspTagHandler.java:802)
         at oracle.jsp.parse.JspParseTag.genXMLSrcTag(JspParseTag.java:867)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcNextTag(JspParseTag.java:745)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcBody(JspParseTag.java:1121)
         at oracle.jsp.parse.OpenJspTagHandler.parseXMLSrcBody(OpenJspTagHandler.java:739)
         at oracle.jsp.parse.JspParseTag.parseXMLSrc(JspParseTag.java:1375)
         at oracle.jsp.parse.JspParseTag.parse(JspParseTag.java:1413)
         at oracle.jsp.parse.OpenJspTagHandler.parse(OpenJspTagHandler.java:802)
         at oracle.jsp.parse.JspParseTag.genXMLSrcTag(JspParseTag.java:867)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcNextTag(JspParseTag.java:745)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcBody(JspParseTag.java:1121)
         at oracle.jsp.parse.OpenJspTagHandler.parseXMLSrcBody(OpenJspTagHandler.java:739)
         at oracle.jsp.parse.JspParseTag.parseXMLSrc(JspParseTag.java:1375)
         at oracle.jsp.parse.JspParseTag.parse(JspParseTag.java:1413)
         at oracle.jsp.parse.OpenJspTagHandler.parse(OpenJspTagHandler.java:802)
         at oracle.jsp.parse.JspParseTag.genXMLSrcTag(JspParseTag.java:867)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcNextTag(JspParseTag.java:745)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcBody(JspParseTag.java:1121)
         at oracle.jsp.parse.OpenJspTagHandler.parseXMLSrcBody(OpenJspTagHandler.java:739)
         at oracle.jsp.parse.JspParseTag.parseXMLSrc(JspParseTag.java:1375)
         at oracle.jsp.parse.JspParseTag.parse(JspParseTag.java:1413)
         at oracle.jsp.parse.OpenJspTagHandler.parse(OpenJspTagHandler.java:802)
         at oracle.jsp.parse.JspParseTag.genXMLSrcTag(JspParseTag.java:867)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcNextTag(JspParseTag.java:745)
         at oracle.jsp.parse.JspParseTag.parseXMLSrcBody(JspParseTag.java:1121)
         at oracle.jsp.parse.JspParseTag.parseXMLSrc(JspParseTag.java:1375)
         at oracle.jsp.parse.JspParseTagFile.parseXMLSrc(JspParseTagFile.java:296)
         at oracle.jsp.parse.JspParseTagFile.parse(JspParseTagFile.java:211)
         at oracle.jsp.parse.OracleJsp2Java.transform(OracleJsp2Java.java:403)
         at oracle.jsp.runtimev2.JspPageCompiler.attemptCompilePage(JspPageCompiler.java:558)
         at oracle.jsp.runtimev2.JspPageCompiler.compilePage(JspPageCompiler.java:348)
         at oracle.jsp.runtimev2.JspPageInfo.compileAndLoad(JspPageInfo.java:610)
         at oracle.jsp.runtimev2.JspPageTable.compileAndServe(JspPageTable.java:634)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:370)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:478)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:401)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:719)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376)
         at com.evermind.server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:298)
         at com.evermind.server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher.java:42)
         at com.evermind.server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:205)
         at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:283)
         at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:209)
         at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
         at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
         at org.apache.shale.faces.ShaleViewHandler.renderView(ShaleViewHandler.java:143)
         at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
         at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
         at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
         at org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
         at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15)
         at pt.ivv.commonbusiness.presentation.servlets.filter.HibernateFilter.doFilter(HibernateFilter.java:68)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:627)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376)
         at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:870)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:451)
         at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:218)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:119)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
         at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
         at java.lang.Thread.run(Thread.java:534)

    Hello,
    You should not try to mix JSP and JSF EL prior to JSF 1.2 and JSP 2.1, the result is inconsistent most of the time.
    To fix your current issue though, I suggest you use the rendered attribute instead of a <c:if>, so would be:
    <h:outputText styleClass="texto_red"
    value="#{bean.genericErrorMessages}"
    id="applicationErrorMessages" escape="false" rendered="#{!empty bean.genericErrorMessages}"/>Regards,
    Simon Lessard

  • Expression language

    Hi,
    I need some help on clarifying the expression language. I have this code
    <h:outputText value="variable"/>I want to replace the variable with a value from the database. How can I do this using the expression language? Or do I need to use the JSP scriplet and call a bean function?
    clarenceloh

    Basically:<h:outputText value="#{myBean.variable}" />MyBeanprivate String variable; // + getter + setter
        loadVariable(); // Can also use constructor or static block for this.
    private void loadVariable() {
        variable = getVariableFromDatabaseSomehow();
    }

  • How to use Type Casting in JSF Expression Language

    I have an attribute CategoryId in my VO of type oracle.jbo.domain.Number. I am trying to use the expression of Boolean item in JSF as #{row.CategoryId != 4}
    Here is the JSF code:
                          <af:column id="s141NewItem3Col" noWrap="true" width="100"
                                     rowHeader="false">
                            <f:facet name="header">
                              <af:outputLabel value="CAtIDDeq4" showRequired="false"
                                              id="ol18"/>
                            </f:facet>
                            <af:inputText id="s141NewItem3"
                                          value="#{row.CategoryId != 4}"
                                          label="CAtIDDeq4" required="false"
                                          readOnly="#{((pageFlowScope.ContractRightCategoriesTable.newRow) and (!(jhsUserRoles['RM, ADMIN, AllButTitl, AllButAdmn']))) or ((!pageFlowScope.ContractRightCategoriesTable.newRow) and (!(jhsUserRoles['RM, ADMIN, AllButTitl, AllButAdmn'])))}"></af:inputText>
                          </af:column>I am getting the run time exception as "Can not convert 4 of type class oracle.jbo.domain.Number to class java.lang.Long".
    I am wondering how the row.CategoryId is treated as Long?. PLease advise. Also, will I be able to use type casting expressions in JSF Expression Language?
    Thanks, Pradeep

    use attributeValue
    Try *#{row.bindings.CategoryId.attributeValue != 4}* ?
    Check this thread for details which discusses about the same:
    El expression to disable  or enable
    Thanks,
    Navaneeth

  • Expression Language support in Weblogic portal workshop8.1 sp5

    while i was developing the jsp pages in Weblogic portal workshop8.1 sp5, though i included jstl.jar and standard.jar in WEB-INF\lib , my jsps are not recognising expression language statements like ${initParam.name}? what might be the reason for this problem?
    pls do the needful.

    Weblogic 8 is J2EE1.3 compliant.
    That means Servlet2.3 / JSP1.2
    Which means it won't understand the EL on its own.
    EL was added with JSP2.0.
    You need to use JSTL1.0 with this server, and the EL expressions can only be used within the JSTL tags, or tags especially written to understand EL.

  • How to use constant in expression language

    I have class Constant which contains
    public static final (constant fields).
    I want to use those constants in expression language in jsp
    ${requestScope.result eq with some constant}
    <c:if test="${requestScope.result eq '<%= Constants.MODE %>'}">
                   Hello World
              </c:if>     
    It does not print Hello World
    even though MODE is 'hello' and result is also set to 'hello'.
    Message was edited by:
    mihir_kapadia

    Its not that simple. There is an article in [url http://www.javaranch.com/journal/200601/Journal200601.jsp#a3]javaranch  about the usage of constants in EL.
    There is [url http://forum.java.sun.com/thread.jspa?forumID=45&threadID=508847]this  cool code snippet from forum user evnafets that would help you with your problem.
    ram.

Maybe you are looking for