大家帮看看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
<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
但是发现不能用
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个《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 从哪里来的
)
<c:choose>
<c:when test="">
XXXX
</c:when>
<c:when test="">
XXX
</c:when>
<c:otherwise>
XXXX
</c:otherwise>
</c:choose>