2012-09-19 40 views
1

我想將EL一個JSF頁面傳遞給Facelets模板。 Facelets模板只是將EL值理解爲字符串值。我如何將EL字符串傳遞給Faceltes模板?EL值可以在JSF和Facelets中傳遞給另一個人嗎?

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)"/> 

它有可能嗎?

回答

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)}" /> 

另一種方法是使用複合組件,而不是。

+0

thz,爲您提供答案。目前,我正在使用Richfaces。我不知道如果將這兩者一起使用會發生什麼 – CycDemo

+0

OmniFaces不是JSF組件庫。它是一個JSF實用程序庫。因此,與JSF組件lirbaries一起使用時的影響在理論上爲零。另見主頁上的介紹性文字。值得一提的是,我們將它與PrimeFaces 3.x和RichFaces 4.x一起用於生產。 – BalusC

+0

雖然,標記對於傳遞EL字符串非常有用,但它不起作用,如下所示; 它的工作方式就像; '我的:confirmationTemplate actionBeanMethod =「#{EmployeeActionBean.deleteEmplayee}」/>'我不能傳遞參數emp(僱員實例值。 – CycDemo

相關問題