У меня есть if
оператор в bean-компоненте, который, кажется, прекрасно обрабатывает, когда я создаю тестовый класс Java, но не работает нормально, когда bean-компонент вызывается jsp.
Мой код, позвольте мне показать вам это:
Во-первых, тестовый класс:
package com.serco.inquire;
import java.util.*;
import java.text.*;
public class TestCollection {
public static void main(String[] args) {
IrCollection myCollection = new IrCollection();
myCollection.setSort("none");
myCollection.setMgrid("none");
int endpoint = myCollection.getSize();
for (int i=0;i<endpoint;i++) {
InquireRecord curRec = myCollection.getCurRecords(i);
Long milis = new Long(curRec.getSubmitDate());
Date theDate = new Date(milis);
Format formatter = new SimpleDateFormat("dd MMM yyyy");
String s = formatter.format(theDate);
System.out.println("ID: " + curRec.getID() + " | Subject: " + curRec.getSubject());
}
}
}
фрагмент из класса IrCollection, который он вызывает:
private void processSort(String datum) {
int LastChar = datum.length()-1;
String colName = datum.substring(0, LastChar);
if (datum=="none") {
this.fullSort = " ORDER BY lastUpdated DESC";
} else {
if (datum.endsWith("2")) {
this.fullSort = " ORDER BY " + colName + " ASC";
} else {
this.fullSort = " ORDER BY " + colName + " DESC";
}
}
}
Есть ещекод в другом методе, который вызывает этот конкретный метод, используя:
this.processSort(this.sort);
Но проблема заключается в части if (datum=="none")
во втором примере кода.Учитывая, что строка 10 первого класса устанавливает переменную-член sort как "none"
, этот метод processSort()
должен установить переменную-член fullSort
в " ORDER BY lastUpdated DESC"
.
И если я использую класс вПервый пример, он делает это.
HOWEVER
У меня есть этот пользовательский тег:
<%@ tag body-content="scriptless" import="com.serco.inquire.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ attribute name="mgr" required="true" %>
<%@ attribute name="mkind" required="false" %>
<%@ attribute name="sort" required="false" %>
<c:if test="${empty mkind}">
<c:set var="mkind" value="manager" />
</c:if>
<c:if test="${empty sort}">
<c:set var="sort" value="none" />
</c:if>
<jsp:useBean id="irc" scope="page" class="com.serco.inquire.IrCollection">
<jsp:setProperty name="irc" property="mgrtype" value="${mkind}" />
<jsp:setProperty name="irc" property="sort" value="${sort}" />
<jsp:setProperty name="irc" property="mgrid" value="${mgr}" />
</jsp:useBean>
${irc.fullsort}
, который вызывает файл .jsp с этим:
<c:set var="user" value="none" />
<c:set var="sort" value="none" />
<inq:displayCollection>
<jsp:attribute name="mgr">${user}</jsp:attribute>
<jsp:attribute name="mkind">cotr</jsp:attribute>
<jsp:attribute name="sort">${sort}</jsp:attribute>
</inq:displayCollection>
Другими словами, те же самые данные передаются в bean-компонент IrCollection.поэтому я должен получить те же данные, верно?
За исключением того, что я получаю это:
ГДЕ cotr = 'none' ЗАКАЗАТЬ не DES
таккогда Java вызывает его, он думает "none" == "none"
, но когда jsp вызывает его, он думает "none" != "none"
.