1

ELoneJSFページをFaceletsテンプレートに渡したいのですが。Faceletsテンプレートは、EL値を文字列値として理解するだけです。EL文字列をFaceltesテンプレートに渡すにはどうすればよいですか?

page1.xthml

<ui:include ..../>
<ui:param actionBeanMethod="#{EmployeeActionBean.deleteEmplayee(emp)}>

page2.xthml

<ui:include ..../>
<ui:param actionBeanMethod="#{DepartmentActionBean.deleteDepartment(dep)}>

comfirmationTemplate.xml内

    <a4j:commandLink onclick="#{rich:component('confirmation')}.show();return false">
        <h:graphicImage value="/img/delete.png" />
    </a4j:commandLink>
    <a4j:jsFunction name="submit" action="#{actionBeanMethod}"/>                    
    <rich:popupPanel id="confirmation" width="250" height="150">
       <f:facet name="header">Confirmation</f:facet>
       <h:panelGrid>
          <h:panelGrid columns="2">
             <h:graphicImage value="/img/alert.png" />
         <h:outputText value="Are you sure?" style="FONT-SIZE: large;" />
          </h:panelGrid>
          <h:panelGroup>
             <input type="button" value="OK" onclick="#{rich:component('confirmation')}.hide();submit();return false" />
         <input type="button" value="Cancel" onclick="#{rich:component('confirmation')}.hide();return false" />
          </h:panelGroup>
       </h:panelGrid>
    </rich:popupPanel>

a4j:jsFuctionの動作を動的に変更したい。

    When page1.xhtm is call,
    <a4j:jsFunction name="submit" action="#{EmployeeActionBean.deleteEmplayee(emp)"/>

    When page2.xhtm is call,
    <a4j:jsFunction name="submit" action="#{DepartmentActionBean.deleteDepartment(dep)"/>

それは可能ですか?

4

1 に答える 1

1

<ui:param>メソッド式を値として渡すことはできません。値式のみを受け入れます。

基本的に、値式をメソッド式として再解釈するカスタムタグハンドラーを作成する必要があります。現在のオープンソースJSFコンポーネント/ユーティリティライブラリから、OmniFaces <o:methodParam>はまさにそれを行う唯一のものです。

<o:methodParam name="methodParam" value="#{actionBeanMethod}" />
<a4j:jsFunction name="submit" action="#{methodParam}" />

FaceletsインクルードをFaceletsタグファイルとして登録し、それを次のように使用するだけです。

<my:confirmationTemplate actionBeanMethod="#{EmployeeActionBean.deleteEmplayee(emp)}" />

別の方法は、代わりに複合コンポーネントを使用することです。

于 2012-09-19T15:51:38.580 に答える