如何从EntityQuery <t>类中找到参数值?</t>

时间:2011-12-16 17:45:37

标签: seam jsf-1.2

我有一个接缝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()。我一直在逐步完成接缝框架代码,并试图找到一个要访问的数据结构,其中包含从表单中设置的参数列表。这些东西在哪里?

如果我在表单的hostname字段中输入了一个字符串,则hostname参数必须设置为#{searchFrom.devName}的值。但是如何找出hostname参数已设置?

我能想到的唯一选择是使用反射并循环遍历SearchFrom的所有类,然后对该对象执行内省以查看已设置的内容并从中构建我的sql查询。

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

1 个答案:

答案 0 :(得分:1)

这是由Seam自动 完成的,这意味着不会为没有值的表单字段添加限制,因此如果用户只输入例如, devName devIp 字段中的数据,则查询将类似于:

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

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