由相同的搜索表单填充的多个字段

问题描述 投票:0回答:1

我有多个字段,需要使用相同的值类型填充。要找到这些字段的值,需要快速搜索。因此,在每个字段旁边,我正在考虑一个调用简单搜索表单的按钮。所以基本上:

Field 1 [...]
Field 2 [...]
Field 3 [...]
...

[单击[...]按钮上的理想情况是通过<p:dialog>在模式窗口中调用搜索表单,以防止不必要的页面导航。在搜索表单中选择该值并且关闭模式窗口时,将设置相应的Field X值。

因此,简而言之,我希望能够将[...]按钮拖放到我想要的位置,并以某种方式将[[link拖放到我要填充的字段中。

我该怎么做?据我所知,豆类注射不能与此一起工作。我只是不知道从哪里开始。
jsf
1个回答
0
投票
我已经做了类似的事情:

用于按钮的复合组件:inpbutton.xhtml

<composite:interface componentType="inpbutton"> <composite:attribute name="value" type="java.lang.Object"/> ... <composite:implementation> <h:commandButton value="..." actionListener="#{cc.action()}"/>

相应的类:Inpbutton.java

@FacesComponent("inpbutton") public class Inpbutton extends UIInput implements NamingContainer { public void action() { ValueExpression vx = getValueExpression("value"); getBean(InpDialog.class).openDialog(vx); } } // static utilities from elsewhere @SuppressWarnings({"unchecked"}) public static <T> T uncheckedCast(Object obj) { return (T) obj; } public static <T> T getBean(Class<T> cls) { BeanManager bm = CDI.current().getBeanManager(); Bean<T> bean = uncheckedCast(bm.getBeans(cls).iterator().next()); CreationalContext<T> ctx = bm.createCreationalContext(bean); return uncheckedCast(bm.getReference(bean, cls, ctx)); }

xhtml:

<h:inputText value="databean.entry1"/> <X:inpbutton value="databean.entry1"/>

也许您将输入字段和按钮组合在复合组件中。

以及用于搜索对话框的bean:InpDialog.java

ValueExpression vx = null; public void openDialog(ValueExpression val) { vx = val; // open the modal dialog with button -> dialogWorker() } public void dialogWorker() { // do the stuff // set the field X value if(vx!=null) vx.setValue(theResult); }

© www.soinside.com 2019 - 2024. All rights reserved.