В документах Джерси приведен пример how to inject HttpSession on resources. Как я должен вводить (или иначе получать доступ к) параметры формы, отправленные по запросам с помощью «Content-Type: application/x-www-form-urlencoded»? Я вижу, что они переданы как parameters on methods, and do not seem to be annotated, позволяя мне поверить, что здесь есть какая-то причуда?Поставщик инъекций с инъецированным MultivaluedMap (application/x-www-form-urlencoded)
The (наивный) завод Я сейчас работаю с реализуются следующим образом, JerseyHttpServletRequestWrapper быть один из моих собственных классов:
import org.glassfish.hk2.api.Factory;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.MultivaluedMap;
public class JerseyHttpServletRequestWrapperFactory implements Factory<JerseyHttpServletRequestWrapper> {
private final HttpServletRequest request;
private final MultivaluedMap<String, String> formParams;
@Inject
public JerseyHttpServletRequestWrapperFactory(HttpServletRequest request, MultivaluedMap<String, String> formParams) {
this.request = request;
this.formParams = formParams;
}
@Override
public JerseyHttpServletRequestWrapper provide() {
return new JerseyHttpServletRequestWrapper(request, formParams);
}
@Override
public void dispose(JerseyHttpServletRequestWrapper jerseyHttpServletRequestWrapper) {
}
}
Я думаю здесь, что поставщик предприятия должно быть введен в экземпляр так что я могу проверить, есть ли на самом деле объект, отправленный с запросом. Попытка непосредственно вводить ошибки MultivaluedMap с:
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=MultivaluedMap<String,String>,parent=JerseyHttpServletRequestWrapperFactory,qualifiers={},position=1,optional=false,self=false,unqualified=null,2067821943)
Это не тот вопрос, который вы должны задать на SO. Вы должны показать нам, что вы сделали до сих пор - дайте нам код. –