大家帮看看el表达式下面代码是否有问题  
<c:if test="${param.radiobutton1 == null}">     
         <input type="radio" name="radiobutton1" value="UserName" />
         </c:if>
          <c:else-if test="${param.radiobutton1 == 'UserName'}">
         <input type="radio" name="radiobutton1" value="UserName" checked/>
         </c:else-if>  <c:else>  
         <input type="radio" name="radiobutton1" value="UserName" />            
         </c:else>
是否可以有      <c:else-if 
我编译有错误:  按照道理是可以这样用的啦?????
严重: Servlet.service() for servlet action threw exception
javax.servlet.jsp.JspException: ServletException in
.jsp(286,10) No tag "else-if" defined in tag library imported with prefix "c"
at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:923)
at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)
at org.apache.jsp.jsp.oddsmatrix.backoffice.templateContentOnly_jsp._jspx_meth_tiles_005finsert_005f0(templateContentOnly_jsp.java:6437)
at org.apache.jsp.jsp.oddsmatrix.backoffice.templateContentOnly_jsp._jspService(templateContentOnly_jsp.java:653)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1062)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.oddsmatrix.website.odds.web.servlet.UserAutomaticLoginFilter.doFilter(UserAutomaticLoginFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source
          

解决方案 »

  1.   

    我参考的是下面的帖子:
    但是发现不能用
      My favorites  | Sign in
    Project Logo 
    lite
    天得一以清 地得一以宁

    Project Home
       
    Downloads
       
    Wiki
       
    Issues
       
    Source
         
    Search
    for

    Updated May 07, 2009 by jindwcn
    Labels:  Featured, Phase-Design
    XMLLiteSyntax  
    基本概念    表达式        类似JSP2.0中引入的EL,表达式是一个简单的运算模型,具有只读的特征。Lite默认实现中,采用的是JSEL。这是一个基于JavaScript运算规则的表达式计算引擎。     控制标记        类似JSP中的标记库,语法上也与JSTL类似,但是更加简单。     客户端模板        一种在服务端被编译成js函数,运行在客户端环境下的前端模板实现。     函数定义        Lite的函数和变量是同一级别的元素,函数也可以当变量传递,也可以通过模板定义字符串处理函数。 在模板翻译期间处理的一种用户自定义标记库。
    输出语法    自动编码输出        * 示例:          ${user.name}。        * 功能:              更具自身在XML文档中出现的位置,自动编码其xml特殊字符,输出表达式值。         * 说明:              这个输出是自动编码的,比如,如果在CDATA中,不会编码,如果在TextNode中,编码<>&;如果在XML属性中,还要编码"或者'。若需要原始文本输出,需要使用:<c:out value="${html}"/>标签。               o 模版表达式求值行为:                    个基于模板上下文数据的读值和简单只读运算的过程;在JavaScript中,其行为类似于:                    function(el){with(context){return eval(el)})    直接输出标签        * 示例          <c:out value="${ user.name} 不编码文本"/>        * value属性:              El表达式和不编码字符串,描述需要输出的文本         * 功能:              输出文本和表达式值,但是不编码其xml标记。         * 说明:              与直接的表达式输出最大的区别是:不编码。     属性内表达式        * 示例:          <input type="button"
                      onclick="${clickScript}"
                      onmouseover="${overScript}"/>        * 功能:              输出表达式值(编码),但是如果整个属性节点的值为null,整个节点将不被输出。         * 说明:              与直接的表达式的区别是:在xml语法约束下,省去了不必要条件判断。 控制标签    条件标签        * 示例:          <c:if test="${index == 0}">[${index},</c:if>
              <c:else-if test="${index == end}">${index}]</c:else-if>
              <c:else>${index},</c:else>    选择标签        * 示例:          <c:choose >
                      <c:when test="${type == 1}">分支1</c:when >
                      <c:when test="${type == 2}">分支2</c:when >
                      <c:otherwise>分支3</c:otherwise>
              </c:choose >        * 功能:              选择第一个条件执行,如果没有命中,执行c:otherwise节点。         * 说明:              这一系列标签其实和if else系列等价,翻译后的目标代码也万全相同。他们的出现,只是为了更加清晰的语法表现手段,而非内核功能的增加。     循环标签        * 示例:          <c:for var="item" items="${list}">
                      ${for.index}:${item}.
              </c:for>
              <c:else>没有找到任何记录</c:else>        * for标签属性:
                  o var : 字符串,且内容为JavaScript的合法变量名。
                  o items : EL,迭代内容,可以是数组,或者java,util.Collection 实例。
                  o status : 可选属性,表示状态变量名,是该循环内for状态的别名。     * 功能:          对items表达式中的数据循环,将每个元素依次申明为var中制定的名称的变量。     * for状态数据结构说明      {index:0,lastIndex:6}。          循环过程中将维护for的状态(index属性),用户在循环体内使用${for.index}获取当前循环的重复次数(从0开始)。     * else 标记说明:          当其与for循环组合,当for循环执行0次后,与其配合的else节点可以执行(常见于做空循环的友好提示,如没有查询到任何数据)。 变量申明标签    通过属性值申明变量    <c:var name="myName" value="${user.name}" />        * 属性表:
                  o name : 变量名称。
                  o value : El表达式(非必要,若无,取子节点渲染数据) 
            * 功能:              定义变量,内容来自value属性。     通过子节点申明变量    <c:var name="myName" >
                ${user.firstName} ${user.lastName}
        </c:var>        * 功能:              定义变量,变量名称是name属性,内容来自子节点输出的文本。 编译期标签    包含标签    * 示例:      <c:include path="menu.xhtml"/>
          <c:include path="controls.xhtml" xpath="//*[@id='pageList']"/>
          <c:include path="#page" xpath="//xhtml:body"/>    * 属性表:
              o path :字符串,可选,未指定时代表需要包含的文档为当前文档。可以是表示一个相对路径,也可以制定一个编译上文的变量(如,页面装饰其实现中,先将目标模板文档对象,作为编译上下文的#page变量,能后解析布局模板)
              o xpath :字符串,可选,用于选取文档片段的xpath语句。     * 功能:          包含一个文档,或者文档片段。     * 说明:          xpath确实有点烦琐,但毕竟事标准,标准永远不是最好的,但他是可行的。 客户端模板块标签    * 示例:      <!-- 这里的内容会编译成JS函数 -->
          <c:client id="userView">
                  <!-- 偷懒有道,xpath直接包含前面那段模板片断 -->
                  <c:include xpath="//*[@id='content']/*" />
          </c:client>
          <c:client id="userListView">
                  <!-- 没的偷懒,那就直接写模板吧 -->
                  <c:for items="${userList}" var="user">
                          <div>${user.name}/${user.company}/${user.city}</div>
                  </c:for>
          </c:client>    * 属性表:
              o id :生成的JavaScript函数的函数名字。     * 功能:          划出一段前端模板块,这段内容将直接翻译成JavaScript函数(静态数据,编译之后再不需要动态数据插入),以备前端脚本随时调用。 函数定义    * 示例:      <!-- 这里的内容会编译成文本处理函数,将插入到模板的默认变量集中 -->
          <c:def name="userRow(user)">
              <tr>
                  <td>${user.name}</td>
                  <td>${user.city}</td>
              </tr>
          </c:def>
          <!-- 使用函数 -->
          <table>
          <c:for var="user" items="${users}">
              <c:out value="${userRow(user)}"/>
          </c:for>
          </table>    * 属性表:
              o name :函数名称和参数定义。     * 功能:          定义一个文本渲染函数,并将其添加到模板默认变量集中,以后该模板就可以像其他内置函数一样调用这个自定义函数了。 函数中的域与通常的脚本闭包函数类似。即:可以使用全局变量和局部变量,全局变量相当于模板顶层上下文,局部变量相当于函数参数,及函数内申明的变量。 
    Comment by KingCQ, May 01, 2009为什么一定要模仿jsp的语法,一大堆的尖括号看起来很繁琐。 并且对dw这样的编辑器很不友好,要是语法能像velocity那样简洁就好了。
    Comment by jindwcn, May 07, 2009有一个类似CommonTemplate??的纯文本的语法。Lite Text 语法${el} 表达式
    $if{test} 条件
    $end 结束块
    $for{var:list} for循环
    $else{test}
    $end
    $var{var=xxx} 变量申明
    $var{var} 变量捕捉不过,相比Lite XML,这个是无任何亮点可言的,所以一直也就没写这个文档,而且新版本的解析器中默认还不会启用。Sign in to add a comment
    ©2009 Google - Code Home - Terms of Service - Privacy Policy - Site Directory - Project Hosting Help
    Hosted by Google Code
    Sign in to see your favoritesFind developer products...Find open source projects...
      

  2.   

    有时候一条路不通 换种方式是一样的
    换成2个《c if 》推荐以下方式
    <c:if test="${param.dateType == null}">
        <input type="radio" value="${dateTypeId}" name="dateType" ${'1' == dateTypeId ? 'checked' : ''}>
         <tc:string code="dateType_${dateTypeId}"/>
            </input>
            <br />
    (这个代码有点不明白
    dateTypeId  从哪里来的

      

  3.   


    <c:choose>
        <c:when test="">
          XXXX
        </c:when>
        <c:when test="">
          XXX
        </c:when>
        <c:otherwise>
          XXXX
        </c:otherwise>       
      </c:choose>