Как создавать собственные методы с помощью плагина Struts2 REST
Моя проблема касается создания собственного метода в действии. Я использую Struts2 и плагин Rest для реализации Restful WebService. Мой класс действий следующий:
public class SampleController implements ModelDriven<Object> {
private Sample sample = new Sample();
private Collection<Sample> list;
private int id;
public HttpHeaders create() {
sdao.save(sample);
return new DefaultHttpHeaders("create");
}
public HttpHeaders destroy() {
return new DefaultHttpHeaders("destroy");
}
public HttpHeaders show() {
return new DefaultHttpHeaders("show").disableCaching();
}
public HttpHeaders update() {
sdao.save(sample);
return new DefaultHttpHeaders("update");
}
public HttpHeaders index() {
list = sdao.findAll();
return new DefaultHttpHeaders("index").disableCaching();
}
public Object getModel() {
return (list != null ? list : sample);
}
public int getId() {
return id;
}
public void setId(Integer id) {
if (id != null) {
this.sample = (Sample) sdao.findById(id);
}
this.id = id;
}
}
Я могу получить доступ к ресурсу через метод GET http правильно. Чтобы использовать пользовательский метод, вызывается путем передачи параметра в поисковые ресурсы, т.е.
public searchBySenderName(String senderName) {
list.addAll(sdao.findBySenderName(senderName))
}
Какие правильные процедуры? Как я могу позвонить через GET следующий URL?
1 ответ
Вы можете вызвать пользовательский метод из любого из предопределенных методов для GET
(index
, show
) в вашем случае см. RESTful логика сопоставления URL.
RESTful логика сопоставления URL
Этот сопоставитель действий Restful обеспечивает сопоставления REST-стиля Ruby-On-Rails. Если метод не указан (через префикс "!" Или "method:"), метод "угадывается" при использовании соглашений в стиле REST, которые проверяют URL и метод HTTP. Особое внимание было уделено тому, чтобы этот маппер работал правильно с плагином codebehind, так что настройка XML не требуется.
Конечно, вы можете изменить имена методов, используемые средством отображения действий, но это повлияет на все приложение. Если вы уже заняли URL ресурса, вам следует использовать другой для выполнения его работы. Это в случае, если вы используете строгий rest
картограф. В смешанном режиме вы можете сопоставить обычное действие с некоторым методом действия.
Конфигурация REST и не RESTfulURL вместе
Если вы хотите продолжать использовать некоторые не-RESTfulURL-адреса вместе с вашими REST-компонентами, то вам нужно будет предоставить конфигурацию, которая будет использоваться мапперами.
Плагины содержат свою собственную конфигурацию. Если вы посмотрите в банку плагина Rest, вы увидите
struts-plugin.xml
и в этом вы увидите некоторые настройки конфигурации, сделанные плагином. Часто плагин просто устанавливает вещи так, как он этого хочет. Вам часто может потребоваться переопределить эти настройки по-своемуstruts.xml
,
И, наконец, вы не можете указать метод через !
или же method:
префикс, потому что он ограничен конфигурацией по умолчанию.