JSP内servlet编辑中的变量

时间:2018-10-15 18:19:55

标签: java jsp servlets

从servlet到jsp。由于AllPost是一个列表,并且我会继续阅读,因此我不知道这是否与我在此处给出的内容相去不远。 同时,我在类内部解决了问题,即在值到达servlet&jsp之前,如下所示。 因此,目前我不知道进一步尝试是否有意义。

提前谢谢!

<c:forEach items="${AllPost}" var ="p">
    <tr>
       <%! int len = Integer.valueOf(${p.detail.length()}); %>
       <%
         if(len<25){
             ${p.detail}.concat("....");
         }
       %>
       <td>${p.detail.substring(0,25)}...</td>

例程类中的第二个选项代码:

ResultSet rs = DB.getPreparedStatement(SQL).executeQuery();
while(rs.next()){
News n = new News(rs.getInt(1),...);
if(Integer.valueOf(rs.getString(1.length())<25){
    String sz = n.getDetail().concat(".........................");
    n.setDetail(sz);
}

1 个答案:

答案 0 :(得分:0)

 <%! int len = Integer.valueOf(${p.detail.length()}); %>

在这里,您要混合使用EL和scriptlet,无法同时使用。不仅如此,您还在代码中使用了JSTL,但仍然使用scriptlet吗?在几乎所有情况下,如果您使用的是JSTL和EL,则无需使用任何scriptlet。 Scriptlet是使用JSP的一种古老的方式。

您的第一个选项的代码应类似于以下内容(无脚本):

<c:forEach items="${AllPost}" var ="p">

 <tr>

 <c:if test="${fn:length(p.detail) lt 25}">
 <td>${p.detail}...</td>
 </c:if>

 <c:if test="${fn:length(p.detail) gt 25}">
 <td>${fn:substring(p.detail, 0, 25)}...</td>
 </c:if>

 </tr>

</c:forEach>

请确保将其包含在jstl函数的页面顶部(如果还没有的话)

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