Как найти значения параметров из класса EntityQuery <T>? - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть приложение 2.2 шва.В основном у меня есть форма с около 30 полей ввода.Каждое поле поддерживается свойством SearchForm.java.Когда я нажимаю «Отправить», я вызываю DevicesList.java (реализует EntityQuery) и перехожу к /DevicesList.xhtml.Все поля ввода и свойства соответствуют перечисленным параметрам DevicesList.page.xml.

Другими словами, в DevicesList.page.xml у нас есть

<param name="hostname" value="#{searchForm.devName}"/>
<param name="loopback" value="#{searchForm.devIp}"/>
<param name="platform" value="#{searchForm.platform}"/>

и т. Д.

Я сильно настраиваю getEjbql () в зависимости от того, какие свойства searchForm установлены.Я прошагал по коду фрейма шва и пытался найти структуру данных для доступа, содержащую список параметров, которые были установлены из формы.Где эти вещи?

Если я ввел строку в поле имени хоста формы, для параметра имени хоста должно быть установлено значение # {searchFrom.devName}.Но как мне узнать, что параметр hostname был установлен?

Единственная альтернатива, которую я могу придумать, - это использовать отражение и пройтись по всем классам SearchFrom, а затем выполнить самоанализ для определения объекта.были установлены и построить мой SQL-запрос из этого.

Должен быть лучший способ.Кто-нибудь знает, как это можно сделать?

1 Ответ

1 голос
/ 27 декабря 2011

Это делается автоматически с помощью Seam, что означает, что не будет добавлять ограничение для поля формы, которое не имеет значения, поэтому, если пользователь вводит данные только в например, поля devName и devIp , тогда запрос будет выглядеть примерно так:

select d from Device d where devName = ? and devIp = ?

даже если ваш DevicesQuery также добавляет еще 27 ограничений для всех полей, они не будут добавлены в запрос, поскольку они пусты

...