0

我有一个接缝 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}"/>

等等

我正在根据设置的 searchForm 属性对 getEjbql() 进行大量定制。我一直在逐步浏览接缝框架代码,并试图找到一个要访问的数据结构,其中包含从表单设置的参数列表。这些东西在哪里?

如果我在表单的主机名字段中输入了字符串,则主机名参数必须设置为 #{searchFrom.devName} 的值。但是我如何发现已经设置了主机名参数呢?

我能想到的唯一替代方法是使用反射并循环遍历 SearchFrom 的所有类,然后对对象执行自省以查看已设置哪些类并从中构建我的 sql 查询。

一定有更好的方法。任何人都知道如何做到这一点?

4

1 回答 1

1

这是由 Seam自动完成的,这意味着它不会对没有值的表单字段添加限制,因此如果用户仅在devNamedevIp字段上输入数据,那么查询将是就像是:

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

即使您的 DevicesQuery 还为所有字段添加了 27 个以上限制,它们也不会被添加到查询中,因为它们是空的

于 2011-12-27T00:41:37.667 回答