【问题标题】:Multiple fields populated by the same search form由同一个搜索表单填充的多个字段
【发布时间】:2020-01-27 19:16:49
【问题描述】:

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

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

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

所以简而言之,我希望能够将这个[...] 按钮放在我想要的任何地方,并以某种方式将其链接到我想要填充的字段。

我该怎么做?据我所知,bean injection 不能用于此。我只是不知道从哪里开始。

【问题讨论】:

    标签: jsf


    【解决方案1】:

    我做过类似的事情:

    按钮的复合组件: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);
    }
    

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 2016-01-29
      • 2020-11-03
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 2021-07-06
      • 2015-08-09
      相关资源
      最近更新 更多