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



在我的应用程序中,我使用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. result datatable

我还映射了一个支持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标签库文件的内容中。别管那个文件,创建你自己的文件。

如果你传递一个值绑定到你的标签,并绑定你的搜索输入字段到这个,那么它应该工作:

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

然后在employee-search.xhtml中:

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

请随意使用其他名称而不是myValue。关键是您在自定义标记上使用的属性名称应该与输入文本组件绑定到的名称匹配。

相关内容

  • 没有找到相关文章

最新更新