我有一个搜索应用程序。
我的搜索结果全部设置为传输对象中的属性。
在我的处理器 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 并避免使用上面的 scriptlet。但是,EL 和 JSTL 对我来说有点希腊化。
(1) 上述代码块的 jstl 等价物是什么?我是否需要对后端进行一些重大更改才能使用 JSTL/EL 实现相同的效果?
(2) 我在jsp中有一些javascript函数。他们会受到 JSTL 的影响吗?例如上面代码中的 loadDetails 函数和上面使用 TO 的 someFunc 函数。
(3) jstl/el中如何调用TO的标志函数
<%
if(searchDetailsTO.isPrevious() || searchDetailsTO.isNext()) {
%>
使用
c:if test="${(searchDetailsTO.isPrevious()) or (searchDetailsTO.isNext())}"
不管用
我尝试使用
<c:when>
然而,在上面单选按钮的 if else 代码中,我开始得到 3 行,每行 3 个按钮(9 个按钮)。
谢谢阅读!!