Я пытаюсь переместить функциональность перенаправления из скриптлета в класс Sightly. То, что я сделал до сих пор:Реализация перенаправления
package apps.myproject.components.page.generic;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.day.cq.wcm.foundation.ELEvaluator;
import com.adobe.cq.sightly.WCMUse;
public class PageComponent extends WCMUse {
private static final Logger log = LoggerFactory.getLogger(PageComponent.class);
public void activate() throws Exception {
}
public void redirect() throws IOException{
String location = getProperties().get("redirectTarget", "");
// resolve variables in path
//where I can find PageContext Object?
//location = ELEvaluator.evaluate(location, getRequest(), new PageContext());
boolean wcmModeIsDisabled = getWcmMode().isDisabled();
boolean wcmModeIsPreview = getWcmMode().isPreview();
if ((location.length() > 0) && ((wcmModeIsDisabled) || (wcmModeIsPreview))) {
// check for recursion
if (getCurrentPage() != null && !location.equals(getCurrentPage().getPath()) && location.length() > 0) {
// check for absolute path
final int protocolIndex = location.indexOf(":/");
final int queryIndex = location.indexOf('?');
final String redirectPath;
if (protocolIndex > -1 && (queryIndex == -1 || queryIndex > protocolIndex)) {
redirectPath = location;
} else {
redirectPath = getResourceResolver().map(getRequest(), location) + ".html";
}
getResponse().sendRedirect(redirectPath);
} else {
getResponse().sendError(HttpServletResponse.SC_NOT_FOUND);
}
}
}
}
Проблема заключается в том, что я не знаю, где я должен получить объект PageContext для ELEvaluator.evaluate() метод с. Передача null
бросает меня NullPointerException
, проходя new PageContext()
бросает
java.lang.Error: Unresolved compilation problem:
Cannot instantiate the type PageContext
Как использовать ELEvaluator или что-то подобное в классе красивый? Есть идеи?
возможно дубликат [Что такое исключение нулевого указателя, и как это исправить?] (HTTP : //stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) –
@AshleyMedway Нет, это определенно не дубликат. Мой вопрос: как я могу использовать ELEvaluator.evaluate() в Sightly классе, в то время как у меня нет объекта pageContext? Необязательно: есть что-то похожее на ELEvaluator в Sightly, что позволяет избежать использования pageContext? Взгляните на последнее предложение моего вопроса. – kmb
Исключения всех нулевых указателей являются дубликатами ... –