超级简单的JSP Javascript问题

时间:2011-07-26 23:31:57

标签: javascript jsp

如果字符串超出一定长度,我会截断它。我是jsp的新手,所以我这样做是我知道的唯一方式。我有一些javascript会用截断的字符串创建一个新的var。我需要在html中使用这个新的displayTag字符串。但是,我意识到我不能在脚本标签之外使用该var。我怎样才能做到这一点?

 <script type="text/javascript">
    var displayTag = "${example.name}";
    if(displayTag.length > 15) {displayTag=displayTag.substring(0,15)+"..."};
    alert(displayTag); // for testing
 </script>

 <a href="some_link"><c:out value=displayTag/></a> // I know this line will not actually work

2 个答案:

答案 0 :(得分:1)

fn:substringfn:length可能就是你想要的。

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<c:choose>
   <c:when test="${fn:length(example.name) > 15}">
      ${fn:substring(example.name, 0, 15)}...
   </c:when>
   <c:otherwise>
      ${example.name}
   </c:otherwise>
</c:choose>

答案 1 :(得分:0)

你的${example.name}是一个使用JSP变量的EL表达式; displayTag是一个Javascript变量,因此您说<c:out value=displayTag/>无效,因为<c:out ...>在页面发送到浏览器之前在服务器上运行,因此javascript变量不会甚至存在。

我更喜欢在服务器上执行此类操作,因此即使Javascript关闭或出错也会失败。

执行此操作的EL表达式可能是

${fn:length(example.name) <= 15 ? example.name : fn:substring(example.name, 0, 15) + '...'}

(我没有测试过) +运算符不适用于EL中的字符串连接,并且没有fn:concatfn:append标准JSTL中的函数,虽然concat似乎是<%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %>

的一部分

在那种情况下,它将是

${fn:length(example.name) <= 15 ? example.name : x:concat(fn:substring(example.name, 0, 15), '...')}

也就是说,如果exam​​ple.name的长度为15或更小,只需使用它,否则取下子串并附加“...”,所有这些都在JSP处理过程中在服务器上完成。