2010-12-06 3 views
0

У меня есть что-то вроде этого ..Jsp эль логики вопрос

<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> 

я могу иметь, если заявление, чтобы проверить, если они смотрят на конкретную страницу или общую страницу

<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+ строк?

Thanks

ответ

1

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

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

И затем использовать вызвать его в вызывающей 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

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

<%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;} 
} 
%> 

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

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

+1

Скриплеты плохой путь. Посмотрите еще раз на решение файла тегов btiernay. – 2010-12-10 01:35:20

Смежные вопросы