検索アプリケーションがあります。
私の検索結果はすべて転送オブジェクトのプロパティとして設定されています。
私のプロセッサ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 の使用に切り替えて、上記のスクリプトレットの使用を避けたいと考えています。しかし、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 つのボタン (9 つのボタン) の 3 つの行を取得し始めました。
読んでくれてありがとう!!