繁体   English   中英

如何重用(jsf)richfaces模式面板对话框?

[英]How to reuse the (jsf) richfaces Modal panel dialog box?

在我的应用程序中,我使用Facelets上的RichFaces 3.3模式面板实现了员工搜索功能。 我试图使它在我的应用程序中可重复使用,因此我在facelet-taglib_1_0.xml添加了以下代码

<tag>
    <tag-name>employeeSearch</tag-name>
    <source>employee-search.xhtml</source>
</tag>

xhtml页面包含以下组件

  1. 搜索输入字段
  2. 搜索按钮
  3. 结果数据表

我还映射了一个支持bean。

我的问题是我无法从搜索输入字段中获取值

我想知道上面给出的方法是否正确,或者是否有更好的方法呢?


感谢您的答复Arjan ...我尝试过,但结果未绑定到结果数据表列表中。 我的代码在这里。

EmployeeSearchBean是请求范围。

调用可重复使用的代码:

<foo:employeeSearch orgSearchId="empHistSearch" bean="#{EmployeeSearchBean}" action="findEmployee" renderedVal="#{empHist.editable}" />

型号面板代码:

<a4j:jsFunction name="submit" action="#{bean[action]}" />

    <rich:modalPanel id="orgUnitSearchPanel_empHistSearch" autosized="true" width="450">
            <f:facet name="header">
                <h:outputText value="#{messages.mepit_OE_Search}" />
            </f:facet>
            <f:facet name="controls">
                <h:panelGroup>
                    <h:graphicImage value="/pics/buttons/fenster_schliessen.gif" id="hideOrgUnitSearchPanel_#{orgSearchId}" styleClass="hidelink" />
                    <rich:componentControl for="orgUnitSearchPanel_#{orgSearchId}" attachTo="hideOrgUnitSearchPanel_#{orgSearchId}" operation="hide" event="onclick" />
                </h:panelGroup>
            </f:facet>
<table class="dispinputTable" cellspacing="2" cellpadding="0">
    <tr>
        <td style="width: 75px;">
            <h:outputText value="#{messages.mepit_OE}" />                   
        </td>
        <td>
            <h:inputText id="empHist_oeExecutingName" value="#{EmployeeSearchBean.empSearchCriteria}" styleClass="text" size="60" />
        </td>
        <td>
            <a4j:commandButton styleClass="mepitButtons" onclick="submit();" value="#{dbMessages.db_search}" title="#{dbMessages.db_search}" reRender="orgUnitDT#{orgSearchId}" />
        </td>
    </tr>
    <tr>
        <td colspan="3" >                       
            <rich:extendedDataTable  width="425px" height="150px"
                id="orgUnitDT#{orgSearchId}" cellspacing="0" cellpadding="0" border="0"
                styleClass="inhalt" var="oeLst" value="#{EmployeeSearchBean.employeeList}" rowClasses="row0, row1">
                <rich:column width="370px;" align="left">
                    <f:facet name="header">
                        <h:outputText value="#{messages.mepit_OE}" />
                    </f:facet>
                    <h:outputText id="empHist_OE" value="#{oeLst.name}" />
                </rich:column>
                <rich:column width="55px;">
                    <f:facet name="header">
                        <h:outputText value="#{messages.mepit_select}" />
                    </f:facet>
                    <h:commandLink value="" styleClass="edit">
                        <f:setPropertyActionListener value="#{oeLst}" target="#{SkillPM.executingOrgUnit}" reRender="empHist_orgUnit" />
                    </h:commandLink>
                    <h:commandLink styleClass="edit" onclick="#{rich:component(mepit:concat(orgSearchId,'orgUnitSearchPanel'))}.hide(); submit(); return false;" />
                </rich:column>                          
            </rich:extendedDataTable >                                              
        </td>
    </tr>                           
</table>
</rich:modalPanel>

立即可以改进的一件事是,您不应将自己的标签添加到标准facelets taglib文件中。 保留该文件,然后创建您自己的文件。

如果您将值绑定传递给标签,并将您的搜索输入字段与此绑定,那么它应该可以工作:

<foo:employeeSearch myValue="#{yourBackingBean.someValue}"/>

然后在employee-search.xhtml

<h:inputText value="#{myValue}" />

随意使用其他名称代替myValue 关键是您在自定义标签上使用的属性名称应与输入文本组件绑定的属性名称匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM