【发布时间】:2011-11-10 07:11:09
【问题描述】:
我有一个搜索应用程序。
我的搜索结果全部设置为传输对象中的属性。
在我的处理器 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 和字符串作为:
<%
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 个按钮)。
感谢阅读!!
【问题讨论】:
标签: java jsp web-applications jstl scriptlet