【问题标题】:How to reuse the (jsf) richfaces Modal panel dialog box?如何重用(jsf)richfaces Modal面板对话框?
【发布时间】:2011-08-20 08:40:00
【问题描述】:

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

【问题讨论】:

    标签: jsf


    【解决方案1】:

    立即开放以供改进的一件事是,您不应该将自己的标签添加到看起来像标准 facelets taglib 文件的文件中。保留该文件并创建您自己的文件。

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

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

    然后在employee-search.xhtml:

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      相关资源
      最近更新 更多