переменная из сервлета редактирования внутри JSP - PullRequest
0 голосов
/ 15 октября 2018

У этого перевода из сервлета в JSP.Поскольку AllPost - это список, и я просматриваю его, я не знаю, насколько это близко к тому, что я здесь привожу.Тем временем я решил проблему внутри класса, то есть до того, как значение поступило в сервлет & 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>

2-й код опции из стандартного класса:

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 голосов
/ 15 октября 2018
 <%! int len = Integer.valueOf(${p.detail.length()}); %>

Здесь вы смешиваете EL и скриптлеты, и то и другое невозможно.Мало того, что вы используете JSTL в своем коде, но все еще прибегаете к скриптлетам?Почти во всех случаях, если вы используете JSTL & EL, вам не нужно использовать никаких скриптлетов.Scriptlets - это устаревший способ использования 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" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...