У меня есть приложение для поиска.
Результат моего поиска все устанавливается как свойства в объекте переноса.
В своем классе Java-процессора я помещаю TO в контекст:
ctx.putUserData("searchDetailsTO", searchDetailsTO);
Наряду с вышеуказанным объектом, несколько строк также устанавливаются так:
ctx.putUserData("productName", productName);
ctx.putUserData("productNameCriteria", productNameCriteria);
ctx.putUserData("currency", currency);
В моем jsp я обращаюсь к TO как:
<jsp:useBean id="searchDetailsTO" scope="session" type="com.domain.SearchDetailsTO" />
и доступ к строкам как:
<%
String productName =(String)session.getAttribute("productName");
String productNameCriteria =(String)session.getAttribute("productNameCriteria");
String currency =(String)session.getAttribute("currency");
int searchResultsSize = searchDetailsTO.getTotalResults();
SomeTO someTO = new SomeTO();
%>
И позже в jsp, используя выше TO и Strings как:
<%
if (productNameCriteria .equals("NAME_BEGINS")) {
%>
<input type="radio" name="productNameCriteria" id="productNameCriteria" value="NAME_BEGINS" CHECKED/><b>Begins With</b>
<input type="radio" name="productNameCriteria" id="productNameCriteria" value="NAME_CONTAINS" /><b>Contains</b>
<input type="radio" name="productNameCriteria" id="productNameCriteria" value="NAME_IS" /><b>Exact Match</b>
<%
} else if (productNameCriteria .equals("NAME_CONTAINS")) {
%>
<input type="radio" name="productNameCriteria" id="productNameCriteria" value="NAME_BEGINS"/><b>Begins With</b>
<input type="radio" name="productNameCriteria" id="productNameCriteria" value="NAME_CONTAINS" CHECKED/><b>Contains</b>
<input type="radio" name="productNameCriteria" id="productNameCriteria" value="NAME_IS" /><b>Exact Match</b>
<%
}
else {
%>
<input type="radio" name="productNameCriteria" id="productNameCriteria" value="NAME_BEGINS"/><b>Begins With</b>
<input type="radio" name="productNameCriteria" id="productNameCriteria" value="NAME_CONTAINS"/><b>Contains</b>
<input type="radio" name="productNameCriteria" id="productNameCriteria" value="NAME_IS" CHECKED/><b>Exact Match</b>
<%
}
%>
А
<%
if (searchResultsSize > 0) {
for (int k = 0; k < searchDetailsTO.getResult().size(); k++) {
someTO = (someTO) searchDetailsTO.getResult().get(k);
%>
<Table>
<TR>
<TD class="gridrow<%=k%2%>" align="center" style="style" width="120">
<%=someTO.getSomething()%>
</TD>
<TD class="gridrow<%=k%2%>" align="left" style="style" width="372">
<A href="#"onclick="loadDetails('<%=someTO.getSomeId()%>', '<%=someTO.getSomethingMore()%>')"; ><%=someTO.getSomethingElse()%></A>
</TD>
</TR>
</Table>
<%
} }
%>
и т.д.. и т.д.
Моя функция JavaScript также использует значение из TO. Что-то вроде:
function someFunc(){
if(option=='goto' && !(pageNum>0 && pageNum<=<%=searchDetailsTO.getTotalPages()%>))
{
alert("Please enter valid Page# (Range 1 to <%=searchDetailsTO.getTotalPages()%>)");
}
Я хочу переключиться на использование JSTL и EL и избегать использования скриптлетов, как указано выше.
Тем не менее, EL и JSTL для меня греческий.
(1) Какими будут jstl-эквиваленты вышеуказанным кодовым блокам? Нужно ли мне делать какие-то серьезные изменения в моем бэкэнде, чтобы добиться того же, используя JSTL / EL ??
(2) У меня есть несколько функций javascript в jsp. Будут ли они затронуты JSTL? Например, Функция loadDetails в вышеприведенном коде и функция someFunc, которая использует в нем TO.
(3) Как вызывать функции флагов TO в jstl / el
<%
if(searchDetailsTO.isPrevious() || searchDetailsTO.isNext()) {
%>
с помощью
c:if test="${(searchDetailsTO.isPrevious()) or (searchDetailsTO.isNext())}"
не работает
Я пытался использовать
<c:when>
в коде if else для переключателей выше, однако, я начал получать 3 ряда по 3 кнопки (9 кнопок).
Спасибо за чтение !!