2014-06-27 44 views
0

我在会话对象下的empId为600,custId为400。我想在它上面应用jstl函数。基本上 我想申请的“600-400”如何在这种情况下使用嵌套EL?

我试图像下面

"${myProject:Taglib(${sessionScope.empId}-${sessionScope.custId})}" 

但得到以下错误

javax.el.ELException: Failed to parse the expression [${myProject:TaglibFunction(${sessionScope.empId] 

我知道我能做到这一点在我的项目的特定标签库功能两个单独的行,即

<c:set var="intermediateVar" value="${sessionScope.empId}-${sessionScope.custId}" scope="page" /> 

var finalValue= "${myProject:TaglibFunction(intermediateVar)}"; 

但是有没有办法我可以做到这一点我ñ单行?

+1

不能。您不能以您想要的方式嵌套el表达式。 – DwB

回答

0

当您已经在表达式中时,您不必再次使用$ {}。尝试:

编辑:变量empId和custId是什么类型? TagLibFunction的参数是什么类型?从你的问题看,它看起来像该方法正在寻找empId(破折号)custId的字符串连接。如果没有更多的细节到后端功能/变量,我只是猜测这里

相反的:

"${myProject:TaglibFunction(sessionScope.empId + '-' + sessionScope.custId)}" 

尝试:

"${myProject:TaglibFunction(sessionScope.empId-sessionScope.custId)}" 

无论哪种方式,您的问题从嵌套表达式茎。 $ {$ {}}

+0

它不起作用。给出错误,例如java.lang.NumberFormatException:对于输入字符串:“ - ” – user3198603

+0

已编辑。希望能帮助到你。只是不要使用内部$ {}。你应该很好地引用来自同一表达式的其他变量。 – Boboman