求助,在jstl中使用常量的方法

laoqiao23 2011-03-23 03:11:52
现在的项目要求jsp画面不能使用java代码,只能用jstl标签,
类似这种
<c:if test=${state=='01'}>

</c:if>

怎么用常量来代替'01',
刚才看到有说用org.appfuse.webapp.taglib.ConstantsTag 来自定义一个常量标签的,
但实在不明白该怎么用,
哪位了解这个类的用法,或者有更好的解决方法,请赐教
...全文
387 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoqiao23 2011-03-24
  • 打赏
  • 举报
回复
太感谢了,虽然还没试呢,感觉这个应该是正解
rainsilence 2011-03-23
  • 打赏
  • 举报
回复
相信org.appfuse.webapp.taglib.ConstantsTag这个标签你已经download了吧

源码这里有:
http://www.javakey.net/source/appfuse/1.x/org/appfuse/webapp/taglib/ConstantsTag.java.html

大致用法
<appfuse:constants scope="request" var="类中Field名" className="org.test.Test(类完整包名)"/>

如果不加var,则表示把className中所有Field都定义为常量
laoqiao23 2011-03-23
  • 打赏
  • 举报
回复
有木有,有木有
java_ArrayList 2011-03-23
  • 打赏
  • 举报
回复
试了一下,常量类里没有get方法的话,
Constant.NAME这种方式在jsp上是取不到的吧,
还是非常感谢
rainsilence 2011-03-23
  • 打赏
  • 举报
回复
变通的方法是在Jsp开头的地方,把常量放入request中
rainsilence 2011-03-23
  • 打赏
  • 举报
回复
的确是取不到.代表get。
laoqiao23 2011-03-23
  • 打赏
  • 举报
回复
试了一下,常量类里没有get方法的话,
Constant.NAME这种方式在jsp上是取不到的吧,
还是非常感谢
rainsilence 2011-03-23
  • 打赏
  • 举报
回复
先定义一个常量类
package org.test;

public class Constant {
public static final String NAME = "123";
}


在jsp头部引用
<%@ page import="org.test.Constant" %>


使用的时候
<c:if test=${Constant.NAME.equals(state)}>

</c:if>
laoqiao23 2011-03-23
  • 打赏
  • 举报
回复
沉了- -
没人会么,是不是现在已经都不用这种方式了呢
laoqiao23 2011-03-23
  • 打赏
  • 举报
回复
呵呵,项目没有用任何框架,纯jsp的,只能用jstl,唉
我嘞个去 2011-03-23
  • 打赏
  • 举报
回复
哪也可以用struts2标签啊!
今天做项目,用到了el表达式和jstl,在tomcat6.0上跑得好好的,没想到copy到tomcat5.5后,服务器起不来了,是tomcat版本的问题。查阅了不少资料,现在总结如下: 错误信息: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory 分析:少包,上网查阅后发现解决方法 解决方法:将javaee.jar包再copy一份放在tomcat目录的common\lib下 如上完成后即解决了该异常,大以为大功告成,没想到又出现了新异常 错误信息:java.lang.NoSuchMethodError: javax.servlet.JSP.PageContext.getELContext()LJAVAx/el/ELContext 分析:这个问题网上找了半天没看到解决方法,只好自己想办法。想起先前看到的一个知识点:tomcat 6 实现了 servlet 2.5 和JSP2.1的规范相应的 tomcat 5 实现的是 2.4和2.0,想到tomcat5不支持JSTL1.2,于是替换JSTL1.1的包试试看后,问题解决 解决方法:移出工程lib目录JSTL1.2.jar,添加standard-1.1.jar和JSTL1.1.jar 总结: jstl1.1版本由2个必要包构成:standard-1.1.jar和JSTL1.1.jar;而jstl1.1版本只有一个必要包JSTL1.2.jar。(一开始在替换的过程想当然的用JSTL1.1.jar换JSTL1.2.jar,然后遗漏了standard-1.1.jar,耽搁了不少时间。) 经测试,tomcat6.0支持JSTL1.2版本,也支持JSTL1.1版本;tomcat5.5只支持JSTL1.1(JSTL1.1一下版本未测试) 不建议将2个版本的3个包同时放在工程,可能会发生版本冲突。(另外,实际操作的时候发现JSTL1.2.jar和JSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)
JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0也是作为标准支持的。   JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。顾名思义,format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行 JSP 页面的国际化。xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据,而 sql 库定义了用来查询关系数据库的操作。   两个 JSTL 标记库验证器允许开发人员在其 JSP 应用程序强制使用编码标准。可以配置 ScriptFreeTLV 验证器以在 JSP 页面禁用各种类型的 JSP 脚本元素 — scriptlet、表达式和声明。类似地,PermittedTaglibsTLV 验证器可以用来限制可能由应用程序的 JSP 页面访问的定制标记库集(包括 JSTL 标记库)。   尽管 JSTL 最终将会成为 J2EE 平台的必需组件,但目前只有少数应用程序服务器包括它。JSTL 1.0 的参考实现可作为 Apache 软件基金会(Apache Software Foundation)的 Jakarta Taglibs 项目(请参阅参考资料)的一部分而获得。可以将该参考实现的定制标记库合并到任何支持 JSP 1.2 和 Servlet 2.3 规范的服务器,以添加对 JSTL 的支持。   如果要使用JSTL,则必须将jstl.jar和 standard.jar文件放到classpath,如果你还需要使用XML processing及Database access (SQL)标签,还要将相关JAR文件放到classpath,这些JAR文件全部存在于下载回来的zip文件。这个zip文件可以从http://jakarta.apache.org/builds/jakarta-taglibs/releases/standard/jakarta-taglibs-standard-1.0.zip下载。 .

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧