#scala #servlets #java-ee-6
#scala #сервлеты #java-ee-6
Вопрос:
Я играю со Scala и сервлетами и пытаюсь использовать аннотации JEE6 для настройки сервлетов, написанных на Scala. Я столкнулся с проблемой вложенных аннотаций. Код Java будет выглядеть примерно так:
@WebServlet(name = "ExampleServlet", urlPatterns = {"/example"},
initParams = {@WebInitParam(name="param1", value="value1"),
@WebInitParam(name="param2", value="value2")}
)
public class ExampleServlet extends HttpServlet {
}
код scala, который я пытаюсь использовать, похож:
@WebServlet(name = "ExampleServlet", urlPatterns = Array("/example"),
initParams = Array(@WebInitParam(name="param1", value="value1",
@WebInitParam(name="param2", value="value2")))
class ExampleServlet extends HttpServlet {
}
но когда я пытаюсь его скомпилировать, я получаю следующее:
[ОШИБКА] /Users/brian/workspace/dsg-scalatra/src/main/scala/org /mbari/dsg/RotatorServlet.scala:15: ошибка: незаконный запуск простого выражения
[ИНФОРМАЦИЯ] initParams = Array( @WebInitParam(имя=»imageDirectory», значение =»/ресурсы / изображения / ротатор»)) )
с ошибкой, указывающей на аннотацию @WebInitParam.
Есть предложения по использованию параметра @WebInitParam, вложенного в аннотацию @WebServlet в Scala?
Ответ №1:
Вы должны использовать new
ключевое слово для создания экземпляров любых аннотаций внутри другой аннотации:
@WebServlet(name = "ExampleServlet", urlPatterns = Array("/example"),
initParams = Array(new WebInitParam(name="param1", value="value1"),
new WebInitParam(name="param2", value="value2")))
class ExampleServlet extends HttpServlet {
}