如何在JSP页面中调用Java方法并传递EL值作为参数?
解决方案:JSP中传递EL值给Java静态方法
你的问题出在<%= %>脚本表达式的特性上——里面写的"${searchbean.searchvalue}"会被当作普通字符串直接传入decode方法,不会自动解析EL表达式对应的值。下面是两种可行的解决办法:
方法一:用EL直接调用静态方法(推荐)
这是最简洁的方式,需要你的容器支持EL 2.2及以上(Tomcat 7+、Jetty 8+等现代容器都满足):
- 先在JSP页面顶部导入你的
ParameterCrypto类:
<%@ page import="com.yourpackage.ParameterCrypto" %>
- 直接通过EL调用静态方法,传入EL解析后的值:
${ParameterCrypto.decode(searchbean.searchvalue)}
方法二:先获取EL值到脚本变量再调用
如果你的容器版本较低,不支持EL调用静态方法,可以先把EL对应的值提取到脚本变量里,再传递给方法:
<% // 从页面作用域中获取searchbean,再拿到searchvalue String searchValue = ((SearchBean) pageContext.findAttribute("searchbean")).getSearchvalue(); %> <%= ParameterCrypto.decode(searchValue) %>
注意:如果
searchbean可能为null,建议加空判断,避免空指针异常。
内容的提问来源于stack exchange,提问作者Hirantha
相关产品推荐
相关产品推荐

