Джерси (JSR 311) и пользовательский ViewProcessor - PullRequest
3 голосов
/ 20 мая 2010

Кажется, я не могу обернуть голову, как внедрить пользовательский ViewProcessor в Джерси. У меня есть следующий ресурс:

@Path("/events")
public class EventController extends AbstractController {
    private static final Logger LOG = LoggerFactory.getLogger(EventController.class);

    @Resource(name = "eventService")
    private EventService eventService;

    public void setEventService(EventService eventService) {
        this.eventService = eventService;
    }

    @GET
    @Produces(MediaType.TEXT_HTML)
    public Viewable viewEventsAsHtml() {
        Map<String, String> model = new HashMap<String, String>();
        model.put("msg", "test");
        return new Viewable("/events.jsp", model);
    }
}

так как я хочу организовать свои представления jsp в "/ WEB-INF / views / jsp", я расширил JSPTemplateProcessor таким образом:

public class CJJspTemplateProcessor extends JSPTemplateProcessor {
    private static final Logger LOG = LoggerFactory.getLogger(CJJspTemplateProcessor.class);

    private final String basePath = "/WEB-INF/views/jsp";

    public CJJspTemplateProcessor(@Context ResourceConfig resourceConfig) {
        super(resourceConfig);
    }

    @Override
    public String resolve(String name) {
        String path;
        if (!name.endsWith(".jsp")) {
            name += ".jsp";
        }
        path = basePath + name;
        LOG.debug("resolving " + name + " to " + path);
        return path;
    }
}

но когда я перехожу к ресурсу события, я получаю 404, хотя я вижу, что TemplateProcessor разрешил правильный путь для jsp в лог-файлах.

plx help:)

1 Ответ

2 голосов
/ 21 мая 2010

Вам не нужен пользовательский TemplateProcessor, чтобы сделать это просто, добавьте следующее к элементу фильтра в вашем web.xml.

<filter>
    <init-param>
        <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>
        <param-value>/WEB-INF/views/jsp</param-value>
    </init-param>
</filter>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...