JSP EL логический вопрос - PullRequest
       26

JSP EL логический вопрос

0 голосов
/ 06 декабря 2010

У меня есть что-то вроде этого ..

<c:if test="${(not empty students) && (studentID != null)}">
      <form:input path=studentsList[${studentID}].name">
      ..........
      ..........
      //some 50+ lines of code
</c:if>

Это когда они просматривают страницу конкретного студента.Если вы просматриваете какую-то общую страницу, я хочу изменить код на что-то вроде этого.

 <c:forEach items="${students}" var="student">
      <form:input path=student.name">
      ..........
      ..........
      //some 50+ lines of code
</c:forEach>

У меня может быть оператор if, чтобы проверить, просматривают ли они определенную страницу или общую страницу

 <c:when ${particularPage}>
       <c:if test="${(not empty students) && (studentID != null)}">
            <form:input path=studentsList[${studentID}].name">
            ..........
            ..........
            //some 50+ lines of code
      </c:if>
<c:otherwise>
      <c:forEach items="${students}" var="student">
             <form:input path=student.name">
            ..........
            ..........
            //some 50+ lines of code
      </c:forEach>
</c:otherwise>

Может кто-нибудь сказать мне, как мы можем изменить код, чтобы мне не пришлось повторять эти 50+ строк ??

Спасибо

Ответы [ 2 ]

1 голос
/ 07 декабря 2010

Использование файла тега jsp пригодится здесь.Просто создайте тег (например, custom.tag), который принимает путь form:input в качестве атрибута:

<%@ attribute name="path" required="true" %>
<form:input path="${path}">
//some 50+ lines of code

, а затем используйте invoke его при вызове jsp:

<%@ taglib tagdir="/WEB-INF/tags" prefix="h" %>
...
    <c:when ${particularPage}> 
       <c:if test="${(not empty students) && (studentID != null)}"> 
          <h:custom path="studentsList[${studentID}].name"/>     
       </c:if> 
       <c:otherwise> 
          <c:forEach items="${students}" var="student"> 
              <h:custom path="student.name"/>
          </c:forEach> 
       </c:otherwise> 
    </c:when>
0 голосов
/ 06 декабря 2010

Спасибо за ответ, но я решил.Я написал сценарии и решил проблему.

<%for(int i = request.getAttribute("studentId") == null ? 0 : ((Integer)request.getAttribute("studentId")).intValue();
 i< ((List)request.getAttribute("students")).size(); i++){

  request.setAttribute("id", new Integer(i));
 %>

  <form:input path=studentsList[${id}].name">
        ..........
        ..........
        //some 50+ lines of code

<% if(!"true".equals(request.getAttribute("specificPage")){break;}
 }
 %>

Я не уверен, что это правильный способ сделать это, но он работает !!!

Пожалуйста, дайте мне знать, если яделать неправильно.

...