2011-08-20 2 views
0

내 응용 프로그램에서는 Facelets의 RichFaces 3.3 모달 패널을 사용하여 직원 검색 기능을 구현했습니다. XHTML의 페이지는 다음 구성 요소(jsf) richfaces 모달 패널 대화 상자를 다시 사용하는 방법은 무엇입니까?

  1. 검색 입력 필드가 내 응용 프로그램을 통해이 재사용을 위해 노력하고있어, 그래서 facelet-taglib_1_0.xml

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

    에 다음 코드를 추가 한

  2. 검색 버튼
  3. 결과 데이터 테이블

나는 또한지도 콩 .

내 문제

내가 위의 방법이 올바른지 여부를 검색 입력 필드 궁금

에서 값을 얻을 수 아니에요 또는 더 좋은 방법이 거기에 있다면?


답장을 보내 주셔서 감사합니다. 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> 

답변

0

한 것은 당신이 표준 Facelets의 모습에 자신의 태그를 추가하지 말아야한다는 것입니다 taglib 파일. 그 파일을 그대로두고 나만의 파일을 만듭니다. 당신이 당신의 태그에 바인딩 값을 전달하고,이에 검색 입력 필드을 결합하면

, 그것은 작동합니다 : 다음

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

employee-search.xhtml에 :

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

느낌 myValue 대신 다른 이름을 자유롭게 사용할 수 있습니다. 핵심은 사용자 정의 태그에서 사용하는 속성 이름이 입력 텍스트 구성 요소가 바인딩되는 것과 일치해야한다는 것입니다.

관련 문제