Вы добавили Select()
после Where()
или раньше?
Вы должны добавить его после, из-за логики параллелизма:
1 Take the entire table
2 Filter it accordingly
3 Select only the ID's
4 Make them distinct.
Если вы делаете выбор Во-первых, предложение Where может содержать только атрибут ID, поскольку все остальные атрибуты уже удалены.
Обновление: для ясности этот порядок операторов должен работать:
db.Items.Where(x=> x.userid == user_ID).Select(x=>x.Id).Distinct();
Вероятно, хотите добавить .toList()
в конце, но это необязательно:)
Вот идея, которая является как программным, так и конфигурационным решением. Вы можете создать собственное ActionMapping ...
public class YourPOSTRequiredActionMapping extends ActionMapping { }
... и использовать в своей конфигурации struts только для сопоставлений, которые являются POST.
<action path="/your/path" type="YourAction" className="YourPOSTRequiredActionMapping" />
Затем вы можете расширить Struts RequestProcessor и переопределить processMapping
public class YourRequestProcessor extends RequestProcessor {
protected ActionMapping processMapping(HttpServletRequest request, HttpServletResponse response, String path) throws IOException {
ActionMapping mapping = super.processMapping(request, response, path);
if (mapping instanceof YourPOSTRequiredActionMapping) {
if (!request.getMethod().equals("POST")) {
mapping = null;
}
}
return mapping;
}
}
Убедитесь, что настроили ваша конфигурация struts для использования YourRequestProcessor.
<controller processorClass="YourRequestProcessor" nocache="true" contentType="text/html; charset=UTF-8" locale="false" />
Я основывал это на каком-то старом рабочем коде, но я даже не скомпилировал приведенный выше пример кода.
Один из способов сделать это без изменения вашего приложения - написать фильтр сервлета, который отклоняет запросы, не относящиеся к POST. Затем вы можете подключить этот фильтр к вашему файлу web.xml и настроить его шаблоны URL в соответствии с путями ваших контроллеров Struts.
Вы можете использовать свой web.xml
для определения прав доступа. Это ограничение предотвращает запросы GET:
<security-constraint>
<web-resource-collection>
<web-resource-name>struts action servlet</web-resource-name>
<url-pattern>*.do</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<!-- no one! -->
</auth-constraint>
</security-constraint>