EL表达式传参数的问题!!!!!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EL表达式传参数的问题!!!!!!!相关的知识,希望对你有一定的参考价值。

例如
jsp页面上的表达式是这样的:$lista.方法.属性
我想在方法后面传递个参数但我查过了说EL不支持传递带参数的方法
我就是想 $lista.方法(参数).属性 ,高手们有没有什么办法????
描述下大概结构:
表A 结构大概这样:
字段: ID 角色 栏目ID 权限1 权限2
数据: 1 a 1 0 1
2 b 2 1 1

表B是个栏目树:
ID 父ID 栏目名称
字段: 1 0 pname(父名称)
数据: 2 1 sname(子名称)
表A的 栏目ID 字段与表B中主键ID关联

我是在页面上循环出了表B的list,然后我通过表B的ID查询出了那个ID在表A中的权限状态
但我要判断是属于哪个角色的哪个栏目,这样没法知道该栏目和它的权限是属于哪个角色

<c:forEach items="栏目树lista" var="item">
<input type="checkbox" <c:if test="$item.selectCode.权限1==1"> checked="checked"</c:if>
/>
</c:forEach>

$item.selectcode.权限1 selectcode是栏目树实体类里的一个方法getSelectcode(),
所以我才想在selectcode这里传入一个角色ID呢,看各位所说这种显然不可能了,
跪求其他方法!!!

你是说用EL表达式传递方法参数的问题吧.
这个用EL表达式是实现不了的.

但是有另外一个方式可以实现,用自定义标签。
自己写个标签,然后在页面引用。不过麻烦程度很高,
而且还要会写自定义标签和配置标签以及使用。
所以你自己权衡利弊吧。
希望我可以帮助到你
参考技术A 简单.
<c:set var="lista">

<jsp:expression>
xxxxx; // jsp代码(如从servlet里面取值等)

</jsp:expression>
<c:set>
这样lista就可以返回你需要的数据了 这样也没有用那些丑陋的< % 等等
参考技术B 点分表达式是相当于 lista.get方法().getXXX。所以没有参数可用,但你可以在里面写
<% %> 或 <jsp:useBean /> 来读取读取到 lista,但用 lista.方法(参数)这样弄出来。

你在 google code 上的 codesearch 搜索一下那个 EL 标签的源代码就能看到它那个 lista 是放在什么地方,是一个局部变量,它是被放在 pageContex 的 request scope 还是 page scope 或是别的地方。追问

麻烦有空看下我的问题补充,我很着急啊~我的需求其他方法怎么做啊

追答

我记得 JSF 表达式可以用 map 表示的,比如
Map marix = new HashMap();

$matrix["key"]) 来查找的,后来 JSF 和 JSP 的 EL 表达式合并成统一的表达式,那应该这种写法也适合 JSTL 的 EL 表达式吧。

假如现在你添加一个方法 Map m = item.getMatrix(); 里面包括你的权限表格。
然后就换成 $item.matrix["权限1"] == 1 这样就可以了。

参考技术C EL表达式可以传递参数啊,为什么不可以呢?好像是param传递和接收的。 参考技术D 可以的,只是方法必须是静态的。 第5个回答  2012-12-03 对你的需求,看的不是很明白。我这有个方式,你可以试试。既然你这里只是做展示用,为什么不用个left join 将两张表的信息合2为一。数据都合并封装在一个对象里就OK,你怎么筛选都行。

js文件中使用EL表达式的问题

var str = ‘${str}‘ ;
var str = ‘${obj.属性名}‘; 
可以再jsp页面的<script></script>中使用外部引入的js文件中不能使用
但是事实情况呢有时候需要在某些插件中js使用,如果是开发时候可以用传参数之类,用隐藏域之类的.

当维护的时候(比如项目分离),之前js文件中写死的配置就会出问题,为了简单可以使用这个方法支持EL表达式
将.js文件改为.jsp,这样可以让容器解析里面的el表达式
然后引用再用 <script src="/${appName}/commons/jq22.jsp"></script> 告诉引入的文件是个script.


以上是关于EL表达式传参数的问题!!!!!!!的主要内容,如果未能解决你的问题,请参考以下文章

EL表达式得不到后台传过来的值

如何在HTML页面用EL表达式接受JSP页面session中传过来的值?

el表达式 问题

如何在两个jsp页面之间传值,在另外一个页面用EL表达式获取值

初探XSS

jquery中使用el表达式的问题,求教